Avez-vous lu l'article de TechCrunch? Vous n'avez pas lu? Alors ceci? Aussi ici ou ici / facebook-messenger-ai /) ou ici ou [ici](http://qiita.com/naoyashiga / items / 6c663f6e773490934312). Les articles augmentent rapidement. Ce sont tous les articles du 4/13. Si vous ne l'avez pas lu, veuillez le lire. Et si vous ne le savez pas, vous pouvez être impressionné. ** Vous pouvez désormais transformer Facebook Messenger en Bot. ** ** Vous pouvez le faire en un rien de temps avec un petit ajustement de l'API Facebook.
Si vous lisez ici, tout est écrit, mais si vous lisez l'anglais, cela sera expliqué de manière appropriée pour ceux qui ont de l'urticaire. Je vais. Cela dit, il n'y a pas grand-chose à faire. Pour que je puisse comprendre aussi. À propos, cette fois, il est implémenté avec python × Tornado.
Regardons-les dans l'ordre
Je l'ai fait vraiment correctement. Cette fois, c'est un essai de bot. Catégorie d'application? Je pense que WWW est bien. Après l'avoir fait, l'écran de réglage de l'application? S'il vous plaît allez à. Deuxième à partir du bas. Messenger-> Démarrer
Il y a un endroit pour sélectionner une page Facebook, alors définissez la page que vous avez créée précédemment. Vous obtiendrez un jeton d'accès pour la page.
Qu'est-ce qu'un webhook? Vous ne le saviez pas, il semble que c'est une fonction qui vous permet de frapper n'importe quelle URL en cas de changement (http://blog.manaten.net/entry/573) Lorsqu'un message arrive au messager qui s'est transformé en robot, il semble être publié sur l'URL définie. Donc, vous devez d'abord authentifier l'URL.
Pour le moment, j'ai écrit un programme qui traite d'abord l'authentification. Utilisez Tornado avec python. Apparemment, il y a beaucoup de 5000 ports, donc 5000. FB official avait un processus pour js, donc je l'ai corrigé en python.
server.py
# -*- coding: utf-8 -*-
import tornado.ioloop
import tornado.web
import json
verify_token = <VERIFY_TOKEN>
class WebHookHandler(tornado.web.RequestHandler):
def get(self):
if self.get_argument("hub.verify_token", "") == verify_token:
self.write(self.get_argument("hub.challenge", ""));
else:
self.write('Error, wrong validation token');
application = tornado.web.Application([
(r"/webhook", WebHookHandler)
])
if __name__ == "__main__":
application.listen(5000)
tornado.ioloop.IOLoop.instance().start()
Écrivez jusqu'à ce point et confirmez qu'il démarre au port 5000. Définissons l'URL du webhook.
Dans l'URL [http: // localhost: 5000 / webhook](http: // localhost: 5000 / webhook), le jeton sert à l'authentification, donc tout va bien, mais donnez-lui la même valeur que \ <VERIFY_TOKEN> utilisée dans la variable python. S'il vous plaît. Cette fois, j'ai utilisé quelque chose comme "test_fb". Vérifiez et enregistrez le champ de saisie suivant comme vous le souhaitez ... ···ne peux pas. On dit que c'est le https.
Que devrais-je faire? Je veux juste l'utiliser pendant un certain temps, mais c'est fastidieux de le donner au serveur. [https: // localhost: 5000](https: // localhost: 5000) ne fonctionne pas (cela n'a pas fonctionné).
Il existe une application super utile appelée ngrok dans le monde.
Le grand avantage est que vous pouvez temporairement exposer un port de votre hôte local au monde extérieur. De plus, il émet également une URL https. Génial.
Les utilisateurs de Mac peuvent entrer avec brew install ngrok. Je suis entré, mais je ne suis pas allé bien, alors je l'ai docilement lâché de ngrok official.
Il est sûr de suivre → ici pour l'utilisation. Officiel le plus fort.
./ngrok http 5000
Frappé
Si une telle chose sort, vous gagnez. L'adresse transmise (partie ca27a10a) est assignée pour être différente à chaque fois, mais si vous l'essayez juste pour le moment, il ne devrait y avoir aucun problème.
Définissez l'adresse https attribuée à l'URL du webhook plus tôt. Vous devriez pouvoir gagner ce temps.
Il semble qu'une authentification soit requise avant l'envoi et la réception.
curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=<PAGE_ACCESS_TOKEN>
\ <PAGE_ACCESS_TOKEN> est un jeton d'accès pour la page facebook.
{"success":true}
C'est ce qui ressort. Prêt quand ça sort ok
FB Official a un exemple de code pour js. Comme vous pouvez le voir, lorsqu'un message arrive, un message sera envoyé à l'URL du webhook. Par contre, lors de l'envoi d'un message, postez-le sur https://graph.facebook.com/v2.6/me/messages. Si vous arrivez ici, tout ce que vous avez à faire est d'écrire le code. Je posterai le code que j'ai écrit pour le moment. \ <VERIFY_TOKEN> est l'URL pour l'authentification du webhook. Cette fois "test_fb". \ <PAGE_ACCESS_TOKEN> est un jeton d'accès à la page facebook comme ci-dessus.
server.py
#!/bin/env python
# -*- coding: utf-8 -*-
import tornado.ioloop
import tornado.web
import json
import requests
verify_token = <VERIFY_TOKEN>
token = <PAGE_ACCESS_TOKEN>
def sendTextMessage(sender, text):
if len(text) <= 0:
return
url = 'https://graph.facebook.com/v2.6/me/messages'
headers = {'content-type': 'application/json'}
data = {
"recipient": {
"id":sender
},
"message": {
"text":"echo: " + text
}
}
params = {"access_token":token}
r = requests.post(url, params=params, data=json.dumps(data), headers=headers)
#print r.text
class WebHookHandler(tornado.web.RequestHandler):
def get(self):
if self.get_argument("hub.verify_token", "") == verify_token:
self.write(self.get_argument("hub.challenge", ""));
else:
self.write('Error, wrong validation token');
def post(self):
print "receive!"
data = json.loads(self.request.body)
print data
messaging_events = data["entry"][0]["messaging"]
text = ""
for event in messaging_events:
sender = event["sender"]["id"];
if ("message" in event and "text" in event["message"]):
text = event["message"]["text"];
sendTextMessage(sender, text)
application = tornado.web.Application([
(r"/webhook", WebHookHandler)
])
if __name__ == "__main__":
application.listen(5000)
tornado.ioloop.IOLoop.instance().start()
Le contenu du programme est extrêmement simple. Lorsqu'un message vole, ajoutez-y "echo:" et renvoyez-le. c'est tout. Vous pouvez créer un Bot avec juste cela (pour le moment). Je viens de récupérer ce que j'ai frappé. Mais c'est amusant.
c'est tout. Je vous remercie pour votre travail acharné. Veuillez nous envoyer une vie de bot amusante.
Recommended Posts