どーもばるすです。
今日も今日とてWorkato記事です。
SlackコネクタのPostMessageを使えば簡単にSlack投稿ができるんですよ。
ただ、これが自分の代わりに投稿されてしまうんです。
傍から見ればbarusuが自作自演してるように見えてしまって、なんだか恥ずかしいんすよね。
Workbotを使えばBotから投稿させられるらしいんですけど、まずはWorkbot使わずにやってみたいなーと思いまして。
ということでWorkbotを使わずにBotとして投稿させる方法をいろいろ試してみました。
いろいろ試してみた
結論
本末転倒ですけど、Workbotを使った方がいいと思いました(小並感)
いろいろ試してみる:パターンを列挙する
今回試すパターンを赤字にして図にしました。

いろいろ試してみる:Slackでbarusuが「春は」と発言したらbotが「あげぽよ」と返す
レシピ全体図
以前に作成したレシピを再利用します。

作り方
パターン1,2共通:Slackのカスタムアクションを設定
App → Slack

Action → Custom action


ここまでは同じです。
パターン1:SlackのカスタムアクションでWebhookを使う
Setup → 各パラメータを設定
- Action name :わかりやすい名前
- Method:POSTを選択
- Path:別途取得したWebhookURLを入力(取得方法はこちら)
- ResponseType:RawResponseを選択 (JSONにすると、実行時にレスポンスが正しくないとエラーが出ます)

(続き)Input欄でUseJSONをクリック

JSON sampleの欄に以下を貼り付けてNext
{ “icon_emoji”:”:horse:”,
“text”: “あげぽよ\nHTTPアクション、Webhookで送信”,
“username”:”HTTPWebhook” }

Generate schemaをクリック

こうなればOK

パターン2:SlackのカスタムアクションでAPIを使う
Setup → 各パラメータを設定
- Action name :わかりやすい名前
- Method:POSTを選択
- Path:https://slack.com/api/chat.postMessage
- ResponseType:JSON response

(続き)Input欄でUseJSONをクリック

JSON sampleの欄に以下を貼り付けてNext
※ChannelIDは読み替えてください
{ “channel”:”ChannelID”,
“icon_emoji”:”:horse:”,
“text”: “あげぽよ\nHTTPアクション、chat.postMessageで送信”,
“username”:”SendPostRequest” }

Generate schemaをクリック

こうなればOK

パターン3,4共通:HTTPアクションを設定
App → HTTP

Action → Send request

Connections → (なければ)新規作成

パターン3:HTTPアクションでWebhookを使う
Setup → 各パラメータを設定
- Action name :わかりやすい名前
- Method:POSTを選択
- Path:別途取得したWebhookURLを入力(取得方法はこちら)
- RequestBody:以下のように記載
{
“icon_emoji”:”:horse:”,
“text”: “あげぽよ\nHTTPアクション、Webhookで送信”,
“username”:”HTTPWebhook”
}

(続き)Response content Type:Text に変更して完了

パターン4:HTTPアクションでAPIを使う
Setup → 各パラメータを設定
- Action name :わかりやすい名前
- Method:POSTを選択
- Path:https://slack.com/api/chat.postMessage
- RequestBody:以下のように記載
{
“channel”: “ChannelID”,
“text”: “あげぽよ\nHTTPアクション、chat.postMessageで送信”,
“icon_emoji”:”:horse:”,
“username”:”HTTPBotChatAPI”
}

(続き)Request headersで Add headerをクリック

それぞれ入力
- Header name:Authorization
- Value:Bearer [xoxb-yourBotToken]

パターン5:Workbotを使う
App → Workbot for Slack

Action → Post message

Connection → Botを選択
※なければ新規作成

Setup → 以下入力
- Channel name :イベント発火されたチャンネル
- Message Text:適当に入力

以上、ここまでで設定は完了。
動かしてみた結果

わかりづらいのでレシピと照らし合わせる

まとめ
いろいろ試してみてわかりました。
が、すべてを詳細に書くには余白が足りないので一言ずつコメントします。
HTTPアクション
お作法が面倒だがリファレンス通りなのでAPITesterとかと同じ要領で扱える。Token入れなきゃいけないのが微妙。
カスタムアクション
Token入れる必要はないが、Connectionを使って認証されるので邪魔に感じることもある。
Workbot
脳死で使える。Botとして投稿したいならこれ。
最後に
軽い気持ちで検証したら結構なボリュームになってしまったし、Workbotが一番良いじゃん!って結果だったのでしょんぼりしています。
ああ、Workbotを使わずにBotとして投稿させたい人生だった。
ありがとうございました。