質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Hangouts

Googleが提供するサービス。モバイル向けにもAndroidとiOSのソフトウェアが提供されています。 グループでのチャット、インターネット電話、ビデオ電話などが利用可能です。 Googleドライブとも連携しており、遠方との共同作業が可能になっています。

Q&A

解決済

1回答

3125閲覧

Google Hangout Chatの自作Botがチャートルームで機能しない

n_yoko

総合スコア32

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Hangouts

Googleが提供するサービス。モバイル向けにもAndroidとiOSのソフトウェアが提供されています。 グループでのチャット、インターネット電話、ビデオ電話などが利用可能です。 Googleドライブとも連携しており、遠方との共同作業が可能になっています。

0グッド

0クリップ

投稿2019/08/06 01:26

はじめに

レビュー依頼ボットを自作しました。Hangout Chatに打つ際、特定のキーワード("レビュー")が含まれていたら、配列の中身を順番に吐き出します。例えば、"No.〇〇のレビューをお願いします"と入力したら、レビュアーを順番に表示するような具合です。

問題

この自作botが、ダイレクトメッセージ(以下、DM)では機能しますが、チャットルーム内で特定のキーワードを入力してもbotから何も反応がありません。チャットルーム内でbotを機能させるには、何か設定が必要なのでしょうか。

前提

  • DMとチャットルームには、同じbotを追加し、同じメッセージを入力しています。
  • Google Developer Console画面の

「APIとサービス」>「Hangout Chat API」>「設定」>「機能」>
**「ボットはルーム内で機能します」**には、チェックが入っています。

ソースコード

js

1// コード.js 2 3/* レビュー依頼のbot 4 * 0. 事前準備)レビュー担当者を決める 5 * 1. トリガー)チャットの投稿に特定の文字列が含まれていたら発動 例:"レビュー" 6 * 2. 処理1)レビュアーを指名する。「review_candidate」から順番に表示 7 * 3. 処理2)戻り値(レビュアー)をonMessage関数に渡す 8*/ 9 10function randomReview(){ 11 var review_candidate = ["@tanaka","@suzuki","@saitou"]; // レビュー担当者 12 13 var props = PropertiesService.getScriptProperties(); // ScriptPropertiesオブジェクトの取得 14 var index = Math.floor(props.getProperty('index')); // "index"キーの値を取得、indexの小数点を無くす(1.0 → 1、2.0 → 2); 15 var review = review_candidate[index]; // 'reviewer'を格納 16 17 if(index >= 2){ 18 props.setProperty('index',0); 19 } else { 20 props.setProperty('index', ++index); // 全員を表示し終えたらindexをリセット 21 } 22 23 return review; 24} 25 26// Hangoutに入力されたら発動 27function onMessage(event) { 28 // 入力された文字列に"レビュー"が含まれていたら、レビュアーを自動で決める 29 if(/レビュー/.test(event.message.text)){ 30 var reviewer = randomReview() 31 } 32 return { 33 "text":reviewer 34 } 35} 36 37

json

1//appsscript.json 2 3{ 4 "timeZone": "Asia/Tokyo", 5 "dependencies": { 6 }, 7 "exceptionLogging": "STACKDRIVER", 8 "chat": { 9 } 10}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2019/08/06 09:59

さっと検索したレベルの薄い提案ですが、ぼっとに@でメンションしないとイベントが発火しないのかもしれないと思いました
n_yoko

2019/08/07 00:53 編集

ご指摘通り、ボットに@でメンションすると、動くようになりました! 情報ありがとうございます。メンションをつけないで動くことが理想ですが、そちらは別に質問を立てることにして、本件はクローズとします。 メンションのお話を、回答欄に書いていただければ(コピペレベルでも)、ベストアンサーとさせて頂きますが、いかがでしょうか? 1~2日ほど解決済にするのを待ちますのでご検討くださいませ。
guest

回答1

0

ベストアンサー

さっと検索したレベルの薄い提案ですが、ぼっとに@でメンションしないとイベントが発火しないのかもしれないと思いました。

--
お言葉にあまえて転記

投稿2019/08/08 08:03

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

n_yoko

2019/08/08 08:06

ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問