Haben Sie den Artikel von [TechCrunch] gelesen (http://jp.techcrunch.com/2016/04/13/20160412agents-on-messenger/)? Hast du nicht gelesen? Dann dies? Auch hier oder hier / facebook-messenger-ai /) oder hier oder hier / items / 6c663f6e773490934312). Artikel nehmen rasant zu. Dies sind alle Artikel vom 13.04. Wenn Sie es nicht gelesen haben, lesen Sie es bitte. Und wenn Sie es nicht wissen, können Sie beeindruckt sein. ** Sie können jetzt Facebook Messenger in einen Bot verwandeln. ** **. Mit ein wenig Optimierung der Facebook-API können Sie dies in kürzester Zeit tun.
Wenn Sie [hier] lesen (https://developers.facebook.com/docs/messenger-platform/quickstart), ist alles geschrieben, aber wenn Sie Englisch lesen, wird es für diejenigen mit Urtikaria angemessen erklärt. Ich werde. Trotzdem gibt es wenig zu tun. Also konnte ich auch verstehen. Dieses Mal ist es übrigens mit Python × Tornado implementiert.
Schauen wir sie uns der Reihe nach an
Ich habe es wirklich richtig gemacht. Diesmal ist es ein Bot-Versuch. App-Kategorie? Ich denke, WWW ist in Ordnung. Nachdem Sie es gemacht haben, wird der Einstellungsbildschirm der Anwendung? Bitte gehe zu. Zweiter von unten. Messenger-> Start
Hier können Sie eine Facebook-Seite auswählen. Legen Sie daher die zuvor erstellte Seite fest. Sie erhalten ein Zugriffstoken für die Seite.
Was ist ein Webhook? Wussten Sie nicht, dass es sich anscheinend um eine Funktion handelt, mit der Sie bei Änderungen auf eine beliebige URL zugreifen können (http://blog.manaten.net/entry/573)? Wenn eine Nachricht an den Messenger kommt, der sich in einen Bot verwandelt hat, scheint sie an die festgelegte URL zu posten. Zuerst müssen Sie die URL authentifizieren.
Zur Zeit habe ich ein Programm geschrieben, das zuerst die Authentifizierung verarbeitet. Verwenden Sie Tornado mit Python. Anscheinend gibt es viele 5000 Ports, also 5000. FB-Beamter hatte einen Prozess für js, also habe ich ihn auf Python behoben.
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()
Schreiben Sie bis zu diesem Punkt und bestätigen Sie, dass es an Port 5000 gestartet wird. Legen wir die URL für den Webhook fest.
Die URL lautet [http: // localhost: 5000 / webhook](http: // localhost: 5000 / webhook), und das Token dient zur Authentifizierung. Alles ist in Ordnung, aber machen Sie den gleichen Wert wie \ <VERIFY_TOKEN>, der in der Python-Variablen verwendet wird. Bitte. Diesmal habe ich so etwas wie "test_fb" verwendet. Überprüfen und speichern Sie das folgende Eingabefeld nach Ihren Wünschen ... ···kann nicht. Es soll das https sein.
Was soll ich machen? Ich möchte es nur für eine Weile verwenden, aber es ist mühsam, es dem Server zu geben. [https: // localhost: 5000](https: // localhost: 5000) funktioniert nicht (es hat nicht funktioniert).
Es gibt eine super nützliche Anwendung namens ngrok auf der Welt.
Das Tolle ist, dass Sie einen Port Ihres lokalen Hosts vorübergehend der Außenwelt aussetzen können. Darüber hinaus wird eine https-URL ausgegeben. Toll.
Mac-Benutzer können mit Brew Install Ngrok teilnehmen. Ich trat ein, aber ich ging nicht gut, also ließ ich es gehorsam von ngrok offiziell fallen.
Es wird sicher → hier zur Verwendung folgen. Offiziell am stärksten.
./ngrok http 5000
Schlagen
Wenn so etwas herauskommt, gewinnen Sie. Die weitergeleitete Adresse (Teil ca27a10a) wird jedes Mal anders zugewiesen. Wenn Sie sie jedoch vorerst nur ausprobieren, sollte dies kein Problem darstellen.
Stellen Sie die der Webhook-URL zuvor zugewiesene https-Adresse ein. Sie sollten in der Lage sein, diese Zeit zu sparen.
Es scheint, dass vor dem Senden und Empfangen eine Authentifizierung erforderlich ist.
curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=<PAGE_ACCESS_TOKEN>
\ <PAGE_ACCESS_TOKEN> ist ein Zugriffstoken für die Facebook-Seite.
{"success":true}
Das kommt heraus. Bereit, wenn es in Ordnung kommt
FB Official enthält Beispielcode für js. Wie Sie sehen können, wird ein Beitrag bei einer Nachricht an die URL des Webhooks gesendet. Wenn Sie eine Nachricht senden, senden Sie sie andererseits an https://graph.facebook.com/v2.6/me/messages. Wenn Sie hierher kommen, müssen Sie nur den Code schreiben. Ich werde den Code, den ich geschrieben habe, vorerst veröffentlichen. \ <VERIFY_TOKEN> ist die URL für die Webhook-Authentifizierung. Diesmal "test_fb". \ <PAGE_ACCESS_TOKEN> ist ein Zugriffstoken auf die Facebook-Seite wie oben.
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()
Der Inhalt des Programms ist sehr einfach. Wenn eine Nachricht gesendet wird, fügen Sie "echo:" hinzu und geben Sie sie zurück. das ist alles. Mit genau dem können Sie (vorerst) einen Bot erstellen. Ich bekomme gerade zurück, was ich getroffen habe. Aber es macht Spaß.
das ist alles. Danke für deine harte Arbeit. Bitte senden Sie uns ein lustiges Bot Life.
Recommended Posts