.
ビジネス向けコミュニケーションツール
「typetalk」 を利用して
メール受信をトリガーに api 経由で、
「typetalk」 の トピック (チャンネル) へメッセージ送信
ということを行っていたのですが、
2025年12月1日 に サービスを終了する
ということになったそうで、
代替策として 「twist」 の api を試してみました
その設定メモです
こちらの方が、
twist api を用いた記事を書いております
(golang + outgoing ですね)
TwistのchatbotをGoで作ってみた
https://qiita.com/usk81/items/bfd15ec3c5ecc23d0b8f
今回は、python + incoming による
「twist」 のスレッドへの新規投稿 を試してみました
[ 00. メニュー ]
01.キッチン
02.仕込み (api token の発行)
03.味見 (python で実行)
04.デザート
[ 01. キッチン ]
・ インターネットがつながっている python 実行環境
-> windows 10 + Python 3.8.1
・ Twist の ID 登録
https://twist.com/login?lang=ja
[ 02. 仕込み (api token の発行) ]
twist に web でログイン後、
Integration Management
https://twist.com/app_console
へ遷移します
「create a new app」 ボタン押下し、
「Create Integration」 ページにて
・Integration type: General integration
・Integration name: (例: test-hook)
を設定し 「Create integration」 ボタン押下にて、
api token が発行されます
※ 使用する token は 「OAuth 2 test token」 です
※ 最初何も考えず 「verification token」 を使用して
invalid token が返ってきて、ハマってしまいました
「OAuth 2 test token」 の下の
説明にもありますが、この token は
お手軽に様々なスコープにアクセスできますのでお試しに便利です
しっかりと運用する場合は、Client ID / Client secret などを
使用して OAuth2 したほうがよさそうです
api token 発行後、上部の Home のリンクで戻ると、
作成された integration [ 例: test-hook ] が表示されます
[ 03. 味見 (python で実行) ]
twist のリファレンスにある curl サンプルを基に
python requests に書き換えます
Add thread
https://developer.twist.com/v3/#add-thread
curl -X POST https://api.twist.com/api/v3/threads/add \
-H "Authorization: Bearer 0123456789abcdef0123456789abcdef01234567" \
-d channel_id=6984 \
-d recipients=[10000, 10001] \
-d title=Thread1
・チャンネル ID (channel_id) は、チャンネルページの URL にあります
https://twist.com/a/987654/ch/123456/
-> ID:123456
・受信者 (recipients) は、色々設定できますが、EVERYONE にすると
チャンネルのすべてのメンバーに通知されます
# -*- coding: utf-8 -*-
import requests
# =============================
def new_thread(url2, token2, channel2, recipient2, title2, comment2):
heads = {
'Authorization': 'Bearer ' + token2,
'Content-Type': 'application/x-www-form-urlencoded',
}
datas = {
'channel_id': channel2,
'recipients': recipient2,
'title': title2,
'content': comment2,
}
req = requests.post(url2, headers=heads, data=datas)
# raise_for_status や try/except キャッチなどはお好みで
if req.status_code == 200:
print('to post is ok !')
else:
print(f'to post is NG')
print(f'status code: {req.status_code}, responses: {req.text}')
# =============================
if __name__ == '__main__':
url1 = 'https://api.twist.com/api/v3/threads/add'
token1 = 'oauth2:abcdefghijklmnopqrstuvwxyz'
channel1 = '123456'
recipient1 = 'EVERYONE'
title1 = 'テスト壱'
comment1 = 'twist の スレッドへ' + '\n' \
+ '新規投稿を行います'
new_thread(url1, token1, channel1, recipient1, title1, comment1)
# ==============================
これで、twist の スレッド へ新規投稿され、
twist web, twist アプリ などで確認ができます
[ 04. デザート ]
ちなみに、新規スレッド投稿 ではなく、
すでに存在しているスレッド内へのコメント投稿 のサンプルはこちらです
Add comment
https://developer.twist.com/v3/#add-comment
curl -X POST https://api.twist.com/api/v3/comments/add \
-H "Authorization: Bearer 0123456789abcdef0123456789abcdef01234567" \
-d thread_id=32038 \
-d recipients=[10000, 10001] \
-d content="OK!"
スレッド ID (thread_id) も URL から
https://twist.com/a/987654/ch/123456/t/223322/
-> ID:223322
となり、新規投稿 と同じような感じで
python でも スレッド内投稿できます
twist のスレッドは、シンプルで分かりやすくていいですね
.