【GAS】Hangouts Chat botsをGoogle Apps Scriptで試してみた

G Suiteアカウント限定ですが、Hangouts Chatがリリースされましたね!

うちの会社はG Suite使っているので、試してみましたが中々の使い心地!

そして、、、Hangouts Chatでは、botが作れるようになったのです!!従来のハングアウトではできなかったことなので、わくわくします!

使ってみようと思ったら、Apps ScriptのCodelabが用意してあったので、それに従って試してみました。Googleさんとっても親切でありがたいです。

Hangouts Chatとは?

G Suiteのチャットサービスに、「ハングアウト」がありますよね。それが、ビデオ会議アプリ「Hangouts Meet」と、メッセージングアプリ「Hangouts Chat」に分割されるという発表が昨年の3月にありました。

ただ分割されるだけじゃなく、よりビジネス用に機能拡充を行うとのことでしたので、期待して待っていたところ、先日ついにリリースになった模様です。(2018年3月1日リリースですかね?)

従来のチャットとの比較もわかりやすく表にしてくれています。

https://support.google.com/a/answer/7651799?hl=ja

また、G Suiteアカウントを持っていることが、利用の前提条件になります。無料のGmailアカウントでは使うことができないので、もしG Suiteアカウントをお持ちでなければ、、、恐れ入りますが、、、ブラウザをそっ閉じしてください。

G Suiteアカウントであれば、以下のURLからHangouts Chatにアクセスできるのではと思います。

https://chat.google.com

botについて

冒頭でも書きましたが、Hangouts Chatでは「bot」を自作することができます。余談ですが、Hangouts Chatのデフォルトで使えるbotもたくさんあるので、いろいろと試してみたいと思っているところです。

さて、botの自作ですが、Google Apps Scriptを使うのが一番早そうなので、それで試してみたいと思います。以下のCodelabに沿っていけば、botを作ることができますが、簡単にポイントだけ噛み砕いてご紹介できればと思います。

https://codelabs.developers.google.com/codelabs/chat-apps-script/index.html#0

とりあえず、作ってみる

とりあえず、オウム返し(話しかけた言葉をそのまま返す)を作ってみたいと思います。

GASのエディタを開く

開いてください。

コードを記述

まずは何も考えずに、以下のコードをコピペしてください。


コード.gs

function onMessage(event) {
  return {text: "You said: " + event.message.text};
}

マニフェストの変更

以下のように、「”chat”: {}」の記述をマニフェストファイルに追記してください。


appsscript.json

{
  "timeZone": "America/Los_Angeles",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "chat": {}
}

マニフェストファイルは、以下の図のように「マニフェスト ファイルを表示」を選択すると「appsscript.json」というファイル名で現れます。

Deployment IDを取得

「公開」→「マニフェストから配置」とすると、以下図のようにDeploymentsのダイアログが出現します。

このダイアログで、Latest Versionの「Get ID」を押して、Deployment IDを控えておいてください。控えたら、ダイアログはすべて閉じて大丈夫です。

Hangouts Chat APIを有効にする

「リソース」→「Cloud Platform プロジェクト」と選択すると、現在作成中のスクリプトと、GCPのプロジェクトとの関連を設定する画面が表示されます。スクリプトを作成した時点で自動作成されたGCPのプロジェクトのリンクをクリックし、GCPのコンソールにアクセスします。

「APIとサービス」→「ライブラリ」と選択し、、、

「Hangouts Chat」と入力し、検索しまして、、、

有効にしてください。

Hangouts Chat APIの設定

有効にしたら、その画面を閉じずに、Hangouts Chat APIの設定を行ってしまいましょう。

「設定」タブを選択すると、設定画面を表示することができます。

設定画面で、以下の項目を編集してください。その他の項目は触らなくてよいです。

  • ボット名:適当でいいです。Codelabでは「Attendance Bot」にしています
  • アバターの URL:インターネット上のリソースを指定しなければいけないのですね。Codelabに従って、「https://goo.gl/kv2ENA」をとりあえず指定
  • 説明:適当でいいd(略)
  • 機能:「ボットはダイレクト メッセージ内で機能します」を選択しておきます
  • 接続設定:「Apps Script project」を選択し、テキストボックスに先ほど控えたDeployment IDを入力する
  • 権限:「ドメイン内の特定のユーザーとグループ」を選択し、ご自身のメアドなどを入力してください

上記の設定を行ったら、変更を保存してください。

動作チェック

あとは、、、実際にボットに話しかけてみましょう。

Hangouts Chatにアクセスして、画面左上の方にある「ユーザー、チャットルーム、botを検索」を選択します。

そこで、先ほど作ったbotの名前を検索すると、、、

作ったbotが出現します!

出現したbotに向かって話しかけてみましょう!

ちゃんとオウム返しが来ますね!

かわいいのぅ、かわいいのぅ

これからカスタマイズしていく上でのポイント

今回はオウム返しまででしたが、今後より深くbotを作成していくためのポイントとなるのでは?という部分を「イベントドリブン」と「Rest API」の観点でご紹介できればと思います。

イベントドリブン

今回はすっ飛ばしましたが、Codelabを忠実に行えばイベントドリブンは理解できると思います。GASで扱えるイベントドリブンの種類とGASでの定義の仕方は、以下のようになります。

  • ルーム、またはDMに追加したとき:GASでは「onAddToSpace()」で定義できます
  • ルーム、またはDMから退出したとき:GASでは「onRemoveFromSpace()」で定義できます
  • メッセージが送られてきたとき:GASでは「onMessage()」で定義できます
  • カードがクリックされたとき:GASでは「onCardClick()」で定義できます

本記事では「onMessage()」しか使っていないですが、今後色々と使ってみたいと思います。

Rest API

Hangouts Chat APIはRest APIで提供されているので、GASからだけではなく、もっと汎用的に扱えるものとなっています。

https://developers.google.com/hangouts/chat/

こちらの方のドキュメントも読み進めると、もっとbotの応用の幅が広がると思います。(たとえば、イベントドリブンではなく時間ベースでbotを動作させるとか、できますね。)

まとめ

Googleのビジネスチャットアプリ「Hangouts Chat」のbotをGoogle Apps Scriptで作ってみましたが、意外と簡単に作ることができました。

ビジネスチャットとしては割と後発ですが、使い勝手はいいので、G Suiteを使っている人であれば「これでいいじゃん」になってしまう人もいらっしゃるのでは?

とにかく、可能性を感じるリリースでした。今後も要チェックです!