前提
初質問です よろしくお願いします
非エンジニアがカップル専用アプリ「Slack」でGAS製Bot運用してみた
WebツールSlackBotGoogleドライブGAS
Published:2016.01.15Last updated:2017.01.27
というブログを参考にSlackで使える言葉遊び(?)botを
Google Apps Scriptで 作ろうと思っていたのですが
予想以上に扱いが難しいのでこちらで質問させていただく事にしました
GASの扱いは慣れてはいませんがある程度知識はあるつもりです
実現したいこと
Slackで「よお」と言われたら名前が"negibot"の「✋(◉ ω ◉`)よお」と返すbotを作りたい
発生している問題
全く応答しない
該当のソースコード
function doPost(e) {
///Slack
// スクリプトのプロパティから各tokenを取得
var prop = PropertiesService.getScriptProperties().getProperties();
var bot_name = "nebibot"; // Botの名前
var bot_icon ="(アイコンURL)"; //Botのアイコン
// tokenが一致しなかったらエラー
if (prop.VERIFY_TOKEN != e.parameter.token) {
throw new Error("invalid token.");
}
/* 帰ってくる値はこんな感じ
token=5oz5Ei0XJcGvZznPJUDnbctoken=5oz5Ei0XJcGvZznPJUDnbcyy
team_id=T0001
team_domain=example
channel_id=C2147483705
channel_name=test
timestamp=1355517523.000005
user_id=U2147483697
user_name=Steve
text=googlebot: What is the air-speed velocity of an unladen swallow?
trigger_word=googlebot:
*/
var app = SlackApp.create(prop.SLACK_ACCESS_TOKEN);
var text = e.parameter.text; // 発言を取得
var channel = e.parameter.channel_id; // Channnelを取得
// あいさつは大事!
if(text.match(/よお/)){
var message = "@" + e.parameter.user_name + "✋(◉ ω ◉`)よお";
app.postMessage(channel, message, {
username: bot_name,
icon_url: bot_icon
});
}
}
}
補足情報
SLACK_ACCESS_TOKENはプロパティで追加済みです
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
いくつか気になりましたので、確認させてください。
- 別途フォームやWEB AppからのPOST送信がトリガーになっているということでよろしいですね?(
doPost(e)
より) - 「スクリプトのプロパティ」に「VERIFY_TOKEN」及び「SLACK_ACCESS_TOKEN」というキーでそれぞれ値が登録されているということですね?
- 最後のif文中、
icon_url: bot_icon
となっていますがbot_iconは未定義ですよね。エラーは出てないのでしょうか?
その他、Slack側のことはわかりませんが、GAS側でエラーとかは出ていませんか?
ちなみにですが、var message = "@" + e.parameter.user_name + "✋(◉ ω ◉`)よお";
となっていますが、特定ユーザーへのメンションは「<@userID>」形式に移行されるようです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
SLACK_ACCESS_TOKENはプロパティで追加済みです
とありますが、プロパティで VERIFY_TOKEN
は登録していますか?
SlackでOutgoing WebHooksを設定した際の「Token」を VERIFY_TOKEN
として登録してください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2018/03/19 08:02
Slackから送られてきたメッセージ(POST送信)で反応させようと思っているので
一応大丈夫だと思います(知識不足でよく分かりませんでした..申し訳ないです)
2について
確認したところ、確かに設定を忘れていました(したつもりになってました)
ただ、トリガーに追加して再度試したのですが状態は前と変わってないです..
3について
実際のURLを貼っていたためURL部分のみ削除しようと思っていたのですが、定義そのものまで削除してしまってました 投稿を修正しました
GASからは何も吐かれていない状態です
Slackも反応する気配すらない状態です..
メンションについて
そうだったんですね それは初耳でした
ありがとうございます 参考にさせていただきます
色々試してみましたが、状態は前と同じでうんともすんとも言わないです..
何が原因なんでしょうかね.. 回答ありがとうございました 参考になりました
2018/03/19 08:49
更には処理が正常に実行されているのか確認する必要がありますね。
例えば、Logger.log()でe.parameter.tokenを確認、もしくは実行トランスクリプトを確認してみてください。
2018/03/19 16:57
他で書いたコードが影響していたようです おかげさまで解決できました
分かりやすい説明ありがとうございました
2018/03/19 17:20
後学者のためにも、公開できる範囲で何が影響していたのか提示したほうが良いですよ。