2016年12月27日火曜日

Typeform でイベント受付を行い、問い合わせがあった場合に通知する

LogicFlow に最近追加された Typeform コネクタ。アンケート作成が主な機能の Typeform ですが、イベント参加申し込みなどにも対応しており、アンケートなども含めユーザーに何かしら入力してもらうものについて色々できるサービスとなっています。

LogicFlow に対して提供されている Typeform コネクタの機能は、トリガが一つだけとなっています。

image

非常にすがすがしいほどシンプルで、「何かしらの反応を貰った時」というトリガになります。アンケートやイベント申し込みでいえば、参加登録されたとかアンケートに回答された、というタイミングです。

image

Typeform 上での作業は、受付サイトを作ることになります。日本語にも問題なく対応されているのと、設問への回答によって次の質問を分岐したり、回答された内容によって設問の文言を変えたりといった、なかなか面白いことが非常に簡単に行えるようになっています。

image

LogicFlow との接続には API Key が必要です。これは右上のメニューから、MyAccount を表示させると確認できます。

image

LogicFlow から利用する際には、最初に接続を作成するのは他のコネクタと同様です。接続名には適当な名称を(管理用に表示される名称となります)、API Key には先ほど確認したキー情報を貼り付け、作成をクリックします。

image

接続すると、作成済みとなっているフォームの一覧が表示されますので、LogicFlow で受け取りたいフォームを選択します。

image

コネクタから提供される値は上記の通りです。フォーム上に設定した各種質問の答えと、受付日時、登録日時が利用可能です。今回はフォーム上で、「何か質問がありますか」的なものを「その他に言い残しておきたいことはありますか」という設問を用意していますので、ここに何か入力された場合に限り、メールで通知を行います。

image

今回はこのような感じで、「その他に言い残しておきたいことはありますか」という設問に入力があった場合に限り、メール通知を行うようにします。その際に IF 文的な条件判断を行うコネクタで入力がありますが、「何か入力されていた場合」というものはそのままでは設定できません。LogicFlow 上で利用可能な関数を利用して判断を行いますが、未設定という判断を行うのが現時点では少々複雑になります。

image

条件判断を行わせている箇所の、一つ上に「作成」コネクタがあるのですが、ここで未設定を判断させるための下準備をしています。

条件判断で行っていることは以下のようにしています。

@not(equals(coalesce(triggerBody()?['その他に言い残しておきたいことはありますか?'], outputs('作成')),outputs('作成')))

単に「未設定かどうか」を判断させたいだけなのですが、このように面倒くさいことをしなくては、現時点での LogicFlow では判断できません。細かい処理としては次のように行っています。

  1. coalesce 関数で「その他に~」が未設定だった場合は、作成コネクタの値を利用
  2. equals 関数で上記の結果が、作成コネクタの値と同一かどうかを判断
  3. not 関数で結果を反転

作成コネクタで設定している GUID は、ほぼほぼ重複することがないといえる値を生成してくれる関数です。また、triggerBody()?[‘その他に言い残しておきたいことはありますか?’] で利用している ? 演算子(triggerBody()? の ?)は、参照した際に Null (存在しない・未設定)の場合でもエラーとならずに Null を返すことができるものです。この挙動に、値が Null の場合に指定した値を返却する関数 coalesce を加えると、未入力だった場合に特定の値を設定することができます。

この場合の特定の値= GUID なので、高確率で未入力を判定できることになります。

image

早速受付サイト側で入力を行い、最後の設問に対して適当に文字を入力します。

image

すると、問い合わせがあったことを通知するメールを飛ばすことができます。

このような形で利用すると、イベント申し込みやアンケート回答の中で、特定のパターン(問い合わせがある、個別な意見があるなど)に限り、通知を行うことも可能です。

0 件のコメント:

コメントを投稿