チャットbotはストーリー次第

エンジニア歴よりサーファー歴の方が遥かに長い。

AIと聞けば、「Andy Irons (アンディー・アイアンズ)」に決まってるだろう。

ところが、世の中のほとんどの人は
人工知能(artificial intelligence)の方をイメージするらしい。

ならば使ってみようじゃないか!
そう思うのが好奇心だけは旺盛な3流エンジニアだ。

自分の知能もおぼつかないのに、何が人工知能だ。
そう揶揄されるだろう。
そんな誹謗中傷なんて気にしないよ。

機械学習・深層学習がAIの得意とする分野だが、
その最もよくお目にかかるサービスが「チャットbot」じゃないだろうか。

なんか質問するとロボットが的確な答えを返してくれるというあれ。
って言っても、その会話自体はあらかじめ人間がシナリオを作成しておく必要がある。

なーんだ、ロボットが勝手に答えてるのかと思ってた。。
はい、出ました、スーパーファンタジーの世界。
んなわけねーだろ!

作ってみてわかったんですが、めっちゃ地味な作業が必要なんですよ。

まず、「発話」→「回答」がもっともベーシックな流れ。

発話には類似語を複数設定できるから、日本語には有難い。

例えば、「サーフィン」「surfing」「波乗り」どれも同じ意味だから。

さらに、「波乗り」「なみのり」も同じ。

人によって、入力ワードは違います。
でも同じ回答に導きたいわけですから設定には相当頭を使って先読みしなくてはなりません。
しかも客観的に一般的に分析する必要がありますね。

ってことは!はい。
僕には不向きな作業でーす。
アスペルガーゆえの独特のシナリオは一般的にヒットしにくいチャットになっちゃうでしょ。

回答は、テキストで会話を返す以外にも、「選択ボタン」や「画像」も設定できて
さらに、外部のAPIにリクエストを投げることもできるんですね。

ここが僕にとっては一番興味がある部分です。
早速APIを作って繋いでみました。

フォームのようなアンケートを作ってみよう!ということで、
あらかじめ用意したユーザー変数を数回の質問文保持したまま
最終会話でドーンと一気にAPIに渡す感じです。

ユーザーの回答内容をデータベースに書き込み成功すると
「回答ありがとう」とメッセージを返して完了です。

本当はLINEのuseridを取得して遷移させたかったのですが
トーク画面上でuseridを取得できないので
今回のアンケートは無記名式で。

どうしてもユーザー情報を連携して取得して保存したいなら
アンケート部分をログインした後のアプリにして展開する必要があるので
チャットボットとはかけ離れたサービスとなってしまいますね。

LINEのユーザープロフィールを取得するには

・チャネルID
・チャネルシークレット

の2つをAPIに投げて、まずはアクセストークンを取得します。

そのアクセストークンをOAuthのBearerにヘッダーリクエストとしてセットして
次のAPIにリクエストしてやっとこさ得られるのです。

今回はLINEのClove Chatbotですが
大体どこのサービスもおんなじだと思います。

今回のログインなしアンケートは、
LINEに限定する必要もないので
webチャットとしてHTMLに埋め込めるように設定しました。

AWSのNginxにinvokeURLをリバースプロキシー設定し
LINE側にはシークレットコードで紐付けます。

これでウェブサイトのどこにでも埋め込める+LINEのトークでアンケートができるようになりました。
友だち登録者が300人くらいいれば無記名なので有効なアンケートが取れるんじゃないでしょうか?
顧客満足度調査や新メニュー考案のプレ調査など
自社サイトやLINE公式で軽く展開してみては!?

最後に、「AIはシンガーのアイでしょ」っていう人が実は一番多い気がします。
チャットbotは「Story(ストーリー)」が一番大切なだけにね。

山田くーん、GENさんの座布団全部持ってってちょうだい!