Google Hangouts Chat Botについて

#はじめに
Googleが2月28日（現地時間）に、メッセージングサービス「Hangouts」からチャットサービスとして派生した「Hangouts Chat」をリリースした。
リリースに伴い、以下２点について分からなかったのでまとめてみた。
<b>・「Google Hangouts Chat」で何ができるのか？
・「Google Hangouts Chat」のBot開発について</b>

#「Google Hangouts Chat」とは
##1.概要
従来の「Hangouts」の個人向けメッセージ機能を基盤として、以下の機能が追加されたチーム向けのコミュニケーションツールである。
・ドキュメントとファイルの共有
・チャットルームでのメッセージのスレッド表示
・ドライブやドキュメントとの連携
・Bot機能
など...

【Hangouts Chat と従来のハングアウトの機能の比較】↓
公式サイト：https://support.google.com/a/answer/7651799?hl=ja&ref_topic=7651939

「Hangouts」は個人向けだったのに対し、「Google Hangouts Chat」は組織で活動しやすいような機能が追加された。
また、利用者の要件としても G Suite ユーザだけが利用できる。
一言で言えば<b>「ビジネス向けのコミュニケーションツール」</b>である。

##2.何ができるのか？
・G Suiteの他のサービスと統合されているため、Googleドライブ内のコンテンツなど簡単に共有できる
・Botが利用できる

その中でもBotに関してはスタート時点で25のBotが用意されている。
ファイルが共有されると通知がくる<b>＠Google Drive</b>、Googleカレンダーのミーティングをサポートする<b>＠Meet</b>などがある。
ただ、用意されているBotは現時点(4/25)で日本語対応になっていない...

また、サードパーティー製Botを追加することもできる。salesforce.comやKayakなどが既に関連ツールを提供している。
自身で専用Botを開発することも可能である。

#「Google Hangouts Chat」のBot開発について
##1.概要
Botは、ユーザからのイベント発生時やその他Webサービスのイベント発生時にBotから応答がくる。
ユーザからのイベントとしては主に以下の３点がある。
・ユーザがChatRoomに参加
・ユーザがBotにmessage送信
・ユーザがChatRoomから退出

Hangouts ChatのBotは、以下の場合に利用できる。
・ダイレクトメッセージ(DM)
・チャットルーム

※グループメッセージ時には利用できない。そもそも、Botを設定することができない。

【Hangouts Chat Botの概念】↓
Chat Bot Concepts：https://developers.google.com/hangouts/chat/concepts/bots

また、Botからの応答は以下の２種類がある。
・テキスト
<img width="800" alt="カード" src="https://developers.google.com/hangouts/chat/images/ux/text-ex.png">
・カード
カードテキストの応答は、複雑なUIを表示させることもできる。
<img width="600" alt="カード" src="https://developers.google.com/hangouts/chat/images/ux/card-ex.png">

##2.Bot開発について
###<b>クイックスタート</b>
開発にあたり、公式サイトで以下の３点がクイックスタートとして記載されている。
・Google Apps Script Bot
　　前提条件：Googleアカウント
　　開発言語：GAS(JavaScript)
　　手順：https://developers.google.com/hangouts/chat/quickstart/apps-script-bot
・Google Cloud Functions bot
　　前提条件：Googleアカウント、請求が有効になっているGoogle Cloudアカウント
　　開発言語：JavaScript
　　手順：https://developers.google.com/hangouts/chat/quickstart/gcf-bot
・Pythonを使用したWebHookの受信
　　前提条件：Python2.6以上、Googleアカウント、既存のハングアウトチャットルーム
　　開発言語：Python
　　手順：https://developers.google.com/hangouts/chat/quickstart/incoming-bot-python

※Google Apps Scriptの利用がBotを開発するのに最も簡単な方法の一つとされている。

###<b>その他の開発</b>
全体としては、以下の様々なプラットフォームと言語でBotを開発することができる。
・Google Apps Script (JavaScript)
・Google Cloud (JavaScript)
・Google App Engine (Python,Java,PHP,Goなど)
・Google Compute Engine (あなたの言語,スタック,インスタンス)
・その他のパブリックまたはプライベートクラウド (AWSなど)

【開発者用ドキュメント】↓
Reference Documentation：https://developers.google.com/hangouts/chat/reference/
Sample Code：https://developers.google.com/hangouts/chat/samples

###<b>Hangouts ChatとBotの接続方法</b>
Hangouts Chatはエンドポイント経由でBotと通信する。
【Botに接続するためのエンドポイントについて】↓
Endpoint types：https://developers.google.com/hangouts/chat/how-tos/bots-develop#archstyles

※ファイアーウォールを使用している場合は、Botにメッセージが送信できないのでHangoutsChatのCloud Pub/Sub統合機能を利用することで接続を確立させる。
【詳細】↓
Cloud Pub/SubをBotのエンドポイントとして使用：https://developers.google.com/hangouts/chat/how-tos/pub-sub

#BotやHangouts Chat利用時のアクセス権限
会話的なやり取りにより、ドライブ内のファイルなどを簡単に共有できるようになる。しかし、実際にBotなどを利用した際の挙動について明確にわからない。
調べてみたがあまり情報がなかった。

以下が調べてみた内容
・ChatRoomに非公開ファイルを共有するとコメントと閲覧だけできる状態でChatRoom内のメンバー全員に共有
・管理者設定により、DMやChatRoomまた組織単位でルールを設定できる（ルール内容は不明）

全然情報がない！！！
とりあえず、実際に動かしたり開発をすることで調べる必要がある。

#まとめ
スタート時点で、Botが準備されているだけあって開発資料が整っていた印象を受けた。ただ、開発資料に記載されているものはGoogle Cloudサービスを利用した内容中心であり公式サイトは英語である。
AWSやAzureの利用に関してはあまり情報がなかった。しかし、サンプルコードでは、Java、Node.js、Pythonが準備されているため開発言語は多様であると感じた。

#参考資料
[公式Developersサイト:Hangouts Chat API](https://developers.google.com/hangouts/chat/ "Hangouts Chat API")
[cURL/Python/AWS Lambda から Webhook を使って Hangouts Chat にメッセージ投稿する方法](https://dev.classmethod.jp/cloud/aws/google-hangouts-chat-integration-with-aws-lambda/ "AWS利用したBot")
[Google Developers Blog](https://developers.googleblog.com/2018/02/develop-bot-integrations-with-hangouts.html "Google Developers Blog")