LoginSignup
2
0

More than 5 years have passed since last update.

typetalkのボットAPIで投稿したい

Posted at

やりたい事

  • typetalk のボットAPI経由でメッセージを投稿できるようにしたい
  • 標準入力から入力できるといろいろ応用できそうなのでそうしたい
  • お手軽にAPIをたたけるスクリプトを用意したい(とりあえずpythonで)

進め方

  • ボット作成+API Token、トピックID情報を取得する
  • sample1.py : 開発ガイドのサンプルそのまま実行してみる
  • sample2.py : 標準入力からの取得処理を追加してみる

ボット作成+API Token、トピックID情報取得

1_botregist.png

  • ID,名前はとりあえず適当でOK
  • APIスコープは topic.post の権限があれば投稿できる
  • ボット設定画面の Typetalk Token と、ボットを作成したトピックのURL内などからTopicID を確認してメモる。

sample1.py : 開発ガイドのサンプルそのままで動作確認

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

参考情報

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0