やりたい事
- typetalk のボットAPI経由でメッセージを投稿できるようにしたい
- 標準入力から入力できるといろいろ応用できそうなのでそうしたい
- お手軽にAPIをたたけるスクリプトを用意したい(とりあえずpythonで)
進め方
- ボット作成+API Token、トピックID情報を取得する
- sample1.py : 開発ガイドのサンプルそのまま実行してみる
- sample2.py : 標準入力からの取得処理を追加してみる
ボット作成+API Token、トピックID情報取得
- 開発ガイド: https://developer.nulab-inc.com/ja/docs/typetalk/auth/ に従いトピック内にボット追加
- ID,名前はとりあえず適当でOK
- APIスコープは
topic.post
の権限があれば投稿できる - ボット設定画面の
Typetalk Token
と、ボットを作成したトピックのURL内などからTopicID
を確認してメモる。
sample1.py : 開発ガイドのサンプルそのままで動作確認
- 公式サンプル: https://developer.nulab-inc.com/ja/docs/typetalk/samples/#tt_python
- 環境により先に
pip install requests
でrequests 導入 http://requests-docs-ja.readthedocs.io/en/latest/user/install/ - 1) で取得した
Typetalk Token
とtoipic id
があればとりあえず試せる
sample1.py
import requests
r = requests.post('https://typetalk.com/api/v1/topics/<topic id>?typetalkToken=<api token>', {'message':'Hello, Typetalk!'})
print r.status_code
print r.json()
実行
python sample1.py
- うまく動いたら 標準入力を受け取れるようサンプルを拡張していく
sample2.py : 標準入力からの取得処理を追加
- topic_id と api_token を変数に
- message は標準入力からメッセージ拾って組み立てるよう拡張
sample2.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import sys
topic_id='<topic id>'
api_token='<api token>'
def main():
lines = sys.stdin.readlines()
for i, line in enumerate(lines):
message = message + line
r = requests.post('https://typetalk.com/api/v1/topics/' + topic_id +'?typetalkToken=' + api_token, {'message': message})
r.status_code
r.json()
if __name__ == "__main__":
main()
使い方
sample2.py単体で実行可能になるよう実行権限を付ける
chmod +x sample2.py
- パイプで標準入力へ流す
echoで流す
echo "hogehoge" | sample2.py
catからファイルの中身を流す
cat hoge.txt | sample2.py
コマンド実行結果を流す
date "+%Y-%m%d" | sample2.py