ビューの修正Lineユーザー一覧ページの作成メッセージのやり取りページ概要Line公式アカウントには、Botモードとチャットモードの2つのモードがあります。チャットモードは普通のラインで、個別にチャットをすることができます。Botモードはユーザーが送信した内容に応じて自動応答するのによく使われますね。Botモードは、Webhookという機能によって成り立っています。これは何かというと、ユーザーがメッセージを送信したり、友達追加をしたり、ブロックしたりそれを解除したり、そういった何らかのイベントの際に、好きな処理をフックする仕組みのことです。具体的に言うと、メッセージの送信や友達追加といった操作をされたときに、私達が作ったDjangoのビューを呼び出してもらえます。この際メッセージ内容やLineユーザーIDといった情報も渡されるので、これを元に応答内容を作成して返信する一般的なBotの運用や、渡されたLineユーザーIDをデータベースに保存しておき、好きなときにプログラム上からメッセージを送信する、といったことも行うことができます。Botモードとチャットモードは両立できません。チャットモードにすると、Webhook機能が使えなくなるのです。そこで今回は、Botモードを使いつつ1対1のチャット機能をDjango側の機能を使って実装していきます。ユーザーがWebサイトのQR画像を読み込むと、Django側のデータベースにLineユーザーIDが登録されるようにしておきましょう。Django、Lineで更新を通知で解説しているので、参考にしてください。今回の記事の完全なソースコードは、Githubにあります。こんな感じで、友達になったLineユーザーの一覧が表示され...Djangoサイト上で、そのユーザーとのメッセージ履歴や送信が行なえます。相手側のLineにも、ちゃんと表示されますね。自動応答機能をなくすLine公式アカウントのサイトで、次のように設定しておきます。応答モードがBot、Webhookがオンになっていることを確認してください。応答メッセージをオフにしてください。これをしないと、ユーザーがメッセージを送信した際に、Djangoのビューが呼ばれなくなり、公式アカウントサイト内で設定した自動メッセージが返されるだけになります。モデルの修正models.pyを次のようにしておきます。{self.is_admin}'LinePushモデルは、Django、Lineで更新を通知で作ったモデルと殆ど同じです。QR画像を読み込んで友達になってくれた、各ユーザーのLineIDが詰まっています。今回はそれにdisplay_nameフィールドを加えました。これはラインの表示名です。誰との会話なのかを判別するために持たせました。場合によっては、このモデルの代わりにDjango組み込みのUserや、それにOneToOneで紐づくモデルを使い、そいつがLineIDや表示名を持つことになるでしょう。LineMessageは、Lineの1つ1つのメッセージを表現するモデルです。pushフィールドはそのメッセージが誰かを表し、textはメッセージの内容、is_adminはロジック上あると便利なのでつけています。これについては、後で説明します。ビューの修正callbakビューを次のように変更します。hook接続確認時にはここ。HttpResponse()Django、Lineで更新を通知から少し変更があります。line_bot_api.get_profile(line_user_id)の部分でLineユーザーの情報を取得し、display_nameフィールドに設定しています。こんな感じで、ユーザーのプロフィールを取得したりもできます。一つが、メッセージ受信時の処理が増えたことです。受け取ったメッセージをDjango側に履歴として残しています。Lineユーザー一覧ページの作成まず、次のようなビューを作成します。'app/line_user_list.html'そして、line_user_list.htmlを作ります。やっていることは、LinePushの一覧を表示するだけですね。%}メッセージのやり取りページ上の一覧ページから、メッセージの表示と送信ができるページを作ります。次のようなビューを作ります。pk=line_push.pk)このビューは各ユーザーへのメッセージの配信と、やり取りしているメッセージの一覧表示を行います。line_message_list.htmlを作ります。そのユーザーのメッセージを左、自分のメッセージを右に表示するなどは、CSSで設定してください。PostsDjango、Lineで更新を通知Djangoで、Webサイトの更新情報を通知するシリーズの一つです。Lineで、Webサイトの更新を伝えていきます。BOTとチャット機能を両立させました。今回はテキストだけでなく、画像の送受信もできるようにしていきます。LineComment記事にコメントするまだコメントはありません。幾つかの方法で、ブログの更新を受け取れます。