タコスって美味しいですよね。
この記事はGoogle Homeを使って近所のメキシコ料理店にタコスの注文ができる・・・
というものでは全くありませんのでご注意ください。
実はこのタコス、最近ではチームビルディングにも一役買っているんです。
Slackというコミニュケーションツールはかなり有名ですが、利用者の中でタコスを送り合う習慣があるみたいです。
HeyTaco! - Bring your team together
チャット上で、タコスと一緒に感謝のメッセージを送るんですね。
側から見るとナンノコッチャと思いますが、実際に利用してみるとそのありがたみがわかる気がしました。
仕事場で、些細なことでもお互いに感謝の言葉を交わす機会が増えるんです。恥ずかしさはタコスが包み隠してくれるんです。
でも、どうせなら感謝の気持ちはキーボードでなく言葉に出して伝えたいですよね。
そこで今回はGoogle Homeからタコスを送ってみましょう。
各種連携
DialogflowとGoogle Homeの連携に関しては以下の記事がわかりやすいです。
Dialogflow入門 - Qiita
DialogflowとSlackの連携はWebhookという技術を使うと簡単にできます。
Webhookとは? - Qiita
今回は両者の間にPythonで作ったプログラムを挟みます。全体として、
Google Home: 発話受信
Dialogflow: 発話分解
Python: 発話解析
Slack: 発話送信
以上のような役割分担になります。それでは早速、
「太郎さん今日は助かりました」というメッセージをGoogle HomeからSlackまで届けていきましょう。
##発話分解
全体像がこちら。
「感謝を伝える人 + 感謝のメッセージ」というEntityの組み合わせでIntentを構成しています。
人名は@sys.given-nameというSystem Entity(Dialogflowで予め用意されているEntity)を用いることで簡単に実装できます。こちらの記事にも上手な使い方が載っています。
【プログラミング不要】Siriのように会話ができるAI(人工知能)の作り方 | AI入門ブログ(人工知能の作り方など人工知能に関する情報を公開)
##発話解析
分析した発話をSlackに送る前に微調整が必要になります。
今回はFlaskを使ってPythonでその処理をします。
@app.route("/", methods=['POST'])
def webhook_taco():
req = request.get_json(silent=True, force=True)
resp = jsonify(taco_post(req))
return resp
def taco_post(request_data):
name = request_data['result']['parameters']['name']
word = request_data['result']['resolvedQuery']
names = {'太郎': 'Taro'}
mension = names[name]
requests.post(<webhook URL>, data = json.dumps({
'text': u'@' + mension + ':taco:' + word ,
'username': u'me',
'icon_emoji': u':snake:',
'link_names': 1,
}))
return {
"speech": name + 'さんに感謝のメッセージとタコスを送りますね',
}
解析と言ってもやるのは
names = {'太郎': 'Taro'}
mension = names[name]
これだけです。
Dialogflowからもらった人名を、Slackで送れるようにメンション名に変える処理ですね。
その後の'text': u'@' + mension + ':taco:' + word
が実際に送信されるメッセージの内容です。
##発話送信
あとは解析した発話をWebhookでSlackまで届けるだけです。
Incoming Webhooks | Slack
メッセージを送りたいSlackのチャンネルを選択するだけです。
こんな感じでタコスが送られてきます。
ただ、今回の例ではタコスの送信者を指定できないので、実際にチームで使う際には注意が必要です。
##おわりに
Google Homeは6人まで声を登録できるので、送信者を声から認識できるようになれば家族でも利用できそうですね。家族の絆を深め、最後はみんなでタコスを食べにいってみてはいかがでしょうか。