さくっとできそうだったので、Pythonを使ってLinebotを操作してみることした。
まず、Linebot自体は、 データを受け取り、そして、 データを返す ことしかしない。
なので、ちょーざっくり言うと、基本的に2つのことを行うために使うケースが多いと考えられる。
- ユーザーからのデータをcallbackで 受け取り、 解釈 する
- 解釈したデータを使って 処理を行い、 返答 する
この、 解釈の方法 と 返答のフォーマット によって、 Botの機能/性質 が決まる。
以下、LinebotモジュールをPythonでざっくり準備してみた。
使い方/実行方法などは、README.mdにあるので、参考にしてもらえればと思う。
Linebotモジュール: https://github.com/JFK/linebot
ここでは、上記のモジュールとrq(jobキューワーカー)を使ってLinebotを操作してみる。
rqを使ってLinebotを実行
- rqについて http://python-rq.org/docs/
rqの準備
job_queue.py
from rq import Queue
from redis import Redis
def queue(name='low'):
redis = Redis()
q = Queue(connection=redis)
return q
rqを使って実行
from job_queue import queue
from linebot import LINEBot
...
# callbackのデータをパースする
bot = LINEBot(<CHANNEL_ID>)
receive = bot.receive_callback(json_body)
to = receive.content('from')
text = 'Hi!'
# テキストを受けっとた場合
if receive.is_message and receive.content('contentType') == ContentType.TEXT:
# jobキューにセットして実行する
queue.enqueue(bot.send_text, [to], text)
...
みたいな感じ。