API.AIにおける独自webサービスとの連携(その1.メール通知)

API.AIで日本語でもトレーニング機能が機能するようになっています。天野研ではLINE/Facebook messengerでAPI.AIを利用したボットを運用しています。そこで、未知の対応できないメッセージがあったときにメールで通知を受け取ることを考えてみました。

API.AIにはfulfillmentという項目で外部サービスと連携(webhook)する機能があります。ここではgoogle apps scriptによる簡易サーバーでこのwebhookを受け取り、メールで通知することとします。

 

google apps script側の設定

google apps scriptはいろいろな形式で利用できますが、ここではgdrive/spreadsheetから利用することとします。せっかくなのでspreadsheetに履歴を記録しながら動作させます。

gdrive上の適当なフォルダーにspreadsheetを作成してください。そこから「ツール」→「スクリプトエディタ」を実行します。ここに以下のようなコードを記入します。

API.AIからはPOST形式で通信がやってきますので、ここではdoPostというメソッドで受信します。そしてspreadsheetの末尾にデータを追記しつつ、「Default Fallback Intent」だった場合にメールを送信しています。

スクリプトエディタで「公開」→「Webアプリケーションとして導入」します。ここで以下のようにします。

  • プロジェクトバージョン:新規作成
  • 次のユーザーとしてアプリケーションを実行:自分
  • アプリケーションにアクセスできるユーザー:全員(匿名ユーザーを含む)

上の操作はソースコード修正時にも常に必要です。これを行わないと修正した内容が反映されいません。

上の後、URLが表示されます。これを次のAPI.AIの設定で利用します。

 

API.AI側の設定

API.AI側では2カ所の設定が必要です。

まず全体設定です。左上のメニューから「Fulfillment」を選んでください。

  • Webhook : ENABLED(と表示されるようにクリック)
  • URL : 上で得たURLをCopy & Paste
  • DOMAINS : Enable webhook for all domains

上のようにして「Save」します。これでFulfillmentが有効になりますが、呼び出しは個々のIntentごとに設定が必要で、デフォルトではどのIntentからも呼び出されません。

 

このため、次に個々のIntentごとの設定です。webhookさせたいIntentを選んでください。ここでは「Default Fallback Intent」とします。

ページ加担に「Fulfillment」がありますので、ここで「Use webhook」をonにします。

 

上の二つの設定を行うことで、google apps scriptがコールされるようになります。

この実装例では毎回メール通知していますが、多数のアクセスがある場合にはspreadsheetに記録だけして、定期的にメール送信するといった工夫が必要でしょう。

 

 

API.AIにおける独自webサービスとの連携(その1.メール通知)” への1件のコメント
1 Ping/トラックバック のために "API.AIにおける独自webサービスとの連携(その1.メール通知)"
  1. […] 結論から言うと、その1で行ったようなGoogle Apps Scriptだけでは実現できなかったのでいわば中継器となるnode.jsを使ったサービスを挟み込んでいます。 […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

*