Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WebSocketからBOTのメッセージを送りたい #2514

Open
ras0q opened this issue Sep 19, 2024 · 1 comment
Open

WebSocketからBOTのメッセージを送りたい #2514

ras0q opened this issue Sep 19, 2024 · 1 comment
Labels
kind/enhancement 機能改善に関するもの

Comments

@ras0q
Copy link
Member

ras0q commented Sep 19, 2024

現状wsモードのBOTはMESSAGE_CREATEDなどのコマンドを受信しws経由でメッセージを受け取ることができる(/bots/ws)が、メッセージの送信には別途HTTPリクエストを送る必要がある(POST /channels/{channelId}/messages)。

send-message:{content}:{channelId}:{embed}のようなコマンドでメッセージが送信できると追加でトークンヘッダの設定などを行わずにwsコネクション内でメッセージを送れるのでbotの実装が楽になる。

メッセージの送信手段が2種類生えるのが少し気がかりくらい

@ras0q ras0q added the kind/enhancement 機能改善に関するもの label Sep 19, 2024
@motoki317
Copy link
Member

個人的には、これにはやや反対ですね...

Botの実装という意味では、既にOpenAPIのドキュメントが充実していてこれからクライアントライブラリが各言語で生成できるはずで、そこにアクセストークン(WebSocketにつなぐものと同じ)を設定するだけで良いはずです。

WebSocket上でこうした独自のプロトコルを「発明」すると、OpenAPIによるドキュメント化とそのコード生成のecosystemの恩恵も受けることができず、むしろbotクライアントの実装コストが増大すると思います。

traQ→Bot側ではNAT越えのためにWebSocketによるイベント配信を利用していますが、Bot→traQ側は普通にリクエストが送れるはずです。
WebSocketによるコマンド送信を利用している、閲覧状態、そのWebSocketで受け取るイベントの設定、RTC状態の制御などは、「そのWebSocketセッションと紐づける必要」があるのでこういう方式になっていますが、その必要が無ければ普通のステートレスなHTTPのAPIで良いはずです。

つまり、変に独自プロトコルを発明するのは辛いと思うので、今のtraQ-UIのクライアントもしている方式(NAT越えのためにWebSocketでイベントを受け取り、サーバーへのリクエストはステートレスなHTTP APIを叩く)に沿う、今の形のままで良いと思います。

also see: https://api.slack.com/apis/socket-mode

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/enhancement 機能改善に関するもの
Projects
None yet
Development

No branches or pull requests

3 participants
@motoki317 @ras0q and others