チャットボットを支えるAPIについて

最近、チャットボットに人気が集まっています。FacebookがMessenger Platformを発表し、さらにLINEがBot APIを発表しました。さらにSkypeや、よく知られているSlackもボットを開発できます。そこに新しいビジネスチャンスを見いだしている人たちもたくさんいます。

そこで今回はチャットボットを作る際に使われているAPIについて紹介します。

WebHooks

一般的にチャットボットではWebHooksが使われています。チャットに投稿があったタイミングで、あらかじめ指定したURLに対してデータをPOSTしてくれます。ボット側から定期的にデータの存在を確認しにいく必要はありません。これは投稿者(IDのみ)、投稿内容、投稿場所といったデータが含まれています。

一度のWebHooksの中には、複数のメッセージが含まれていることがあります。これは通信量を減らすための工夫です。

ストリーミング

WebHooksに対応していない、TwitterのようなサービスにおいてはストリーミングAPIが提供されています。これはTwitterのサーバに持続的な接続を行い、指定したワードを含むメッセージが届く度にイベントが発生します。

技術的に若干難度か高いこと、接続できる数に限度があること(Twitterは1アカウント1接続まで。かつすべてのワードがとれるわけではありません)、サービス自体ベストエフォートであるといった点を考えておく必要があります。

RESTful

チャットサービスにデータを投稿するのはRESTfulなAPIによって実現しています。HTTPS通信を使い、指定されたトークンを使ってPOSTするだけです。WebHooksとは切り離せますので、定期的なお知らせ、ツイートなどを流す際には外部からコールしてあげればOKです。

OAuth2

多くのチャットボットではチャットメッセージの中にユーザ情報を含んでいません。そこであらかじめ取得したIDを使ってプロフィールAPIを叩くことになります。この時使われるのがOAuth2です。つまり、投稿したユーザの情報が見られる権限(主にユーザ自身)を使ってプロフィール情報を取得します。Slackのようにグループを基本としている場合は、グループの一員であれば情報が取得できます。

ボットはユーザ情報収集目的に使うと危険性が高いので、プライバシーに配慮しているのだと思われます。


いかがでしょうか。チャットボットもこれまでのAPIによって成り立っています。こうした技術を習得しておけば、ボットの開発はとても簡単に行えるでしょう。逆に提供側としてもこの辺りの技術を使って提供すべきで、独自路線はやめておくべきです。

© NTT Communications Corporation 2014