Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

Slack 新機能 socket modeを(妄想で)使う

$
0
0

この記事はTakumi Akashiro ひとり Advent Calendar 2020の9日目の記事です。

この記事は2021年上旬リリース予定のSocketModeに関して、
現在リリースされているコードを読んで妄想を垂れ流す記事です。

何一つ試したコードはないので、そのことを配慮してください。Yoro!

始めに

つい数日目、SlackのPC版クライアントから更新してくれと、散々泣きつかれていた俺はようやく更新ボタンを押した。
そしてクライアント更新後、数か月にSlackの新機能を覗いた。
ワークフロービルダーのように思った以上に使える機能を期待していた。

そして見つけてしまった。
image.png

…あ、いやこれじゃなかった…これも滅茶苦茶うれしいんだが。ありがとうSlack!

image.png

image.png

うおおおおおおおぉっぉおおおおおおおおおおお!!!!!!!!!
これだよ!!!これ!!!!!

情シスににらまれて、下手こいて情報流出させて、退職処分になる悪夢を見なくてもSlackアプリを作れる!!!
もう仕方なく、いつ廃止されるのかわからないClassic Botを変なところから作らなくていいんだ!!!!

ありがとぉおおおー!!!!!Slack!!!!!!

…というわけで、少しでも早く使いたいので、SocketModeについて調べます。

image.png

……あれ?まだリリースされてないはずじゃ?
まあ見てみましょう。

@slack/socket-mode - npm を眺める

@slack/socket-mode - npm

image.png

ドキュメントは…まだ見れないですね。

なるほど。xappから始まるTokenを渡さないといけないんですね。
…まだ、xappから始まるTokenを作る手段はないので、使えないようです。

そして、permissionにはconnections:writeが必要なみたいです。
こちらも当然まだないですね。

動かせないけど書いてみる

とりあえず読んだ感じで、Helloを含むpostがあったときにHello @usernameと返す場合を書いてみると……

const{SocketModeClient}=require('@slack/socket-mode');const{WebClient}=require('@slack/web-api');// xappから始まるトークンを環境変数[SLACK_APP_TOKEN]にセットしておくconstsocketModeClient=newSocketModeClient(process.env.SLACK_APP_TOKEN);constWebClient=newWebClient(process.env.BOT_TOKEN);// Send a messageに書いてあるmember_joined_channelイベントへの反応から改造。// ackはboltのドキュメント曰くSlack側へイベントが正常に受信されたことを伝える。// bodyは何なんだ?わからねえ……client.on('message',async({event,body,ack})=>{try{awaitack();// 通常メッセージ以外を弾く。おそらくBotもはじけてるはず。if('subtype'inevent)return;// Helloが含まれてないものを弾く。if(!event.text.includes("Hello"))return;awaitWebClient.chat.postMessage({text:`Hello <@${event.user}>.`,channel:event.channel});}catch(error){console.log('An error occurred',error);}})(async()=>{awaitclient.start();})();

こんな感じですかね。

締め

あ゛あ゛ーーー2021年が待ち遠しい゛゛!!!!

最後に

この記事は2021年上旬リリース予定のSocketModeに関して、
現在リリースされているコードを読んで妄想を垂れ流す記事でした。


Viewing all articles
Browse latest Browse all 8691

Trending Articles