Google App Engine の XMPPをPythonで書いてみる-2

Google App Engine でのxmppアプリその2。
今度は、メッセージを受信して、返信する機能を実装してみる。
作ってみたら、アプリ側から送信するよりも、受信してリプライする方が圧倒的に簡単だった。

注意点はapp.yamlにxmpp受信をするための定義が必要になる。それ以外は普通のwebアプリのpostと似たような感じで記述するだけだった。

app.yamlに次のような記述が必要


application: civic-site
version: 1
runtime: python
api_version: 1

handlers:
- url: /_ah/xmpp/message/chat/
  script: xmpp-test.py

inbound_services:
- xmpp_message

URLの定義は、普通のwebappと同じような感じだが、URLは専用の/_ah/xmpp/message/chat/になる。(末尾の/を忘れないように)
あと、xmpp受信のための設定として、inbound_servicesという設定が必要になる。

アプリの方はとてもシンプル。前回の送信よりもシンプルだ。


#!-*- coding:utf-8 -*-

import wsgiref.handlers
import logging
from google.appengine.ext import webapp
from google.appengine.api import xmpp

class XmppRecvSend(webapp.RequestHandler):
  def post(self):
    message = xmpp.Message(self.request.POST)
    message.reply("Hello World! - " + message.body)

def main():
  application = webapp.WSGIApplication(
      [
        ('/_ah/xmpp/message/chat/', XmppRecvSend)
      ], debug=True)
  wsgiref.handlers.CGIHandler().run(application)

if __name__ == "__main__":
  main()

アプリケーションをマッピングするURLを先ほどの/_ah/xmpp/message/chat/とする。
アプリはpostで動作するCGIみたいに書くことができる。
POSTされたデータから、xmlpp.Messageオブジェクトを生成し、あとはそれを解析したり、replyをするだけで返答することができる。簡単。

受信返信アプリは、開発用サーバーでも動作確認することができる。
development consoleにXMPPという機能があるので、ここからbotアカウント宛に送信する。(app-id)@appspot.com。
botアカウントは、(anything)@(app-id).appspotchat.comの形式でいくつも定義することができるが、どこに送っても全部動くようだ。アプリ側で分岐するの?それでいいの?

これで、このbotアカウントに対して話しかけると、メッセージを”Hello World! – ” を付けてオウム返ししてきます。仕組み自体はこれだけです。あとはbotにどんなことをさせるのか、アイデアを出していきましょう。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)