最後に、Facebookはメッセンジャー用のAPIを立ち上げました メッセンジャー用のAPI 。これにより、チャットボットを作成できます。
入門ガイド で、webhookをセットアップする必要があります。これには、特定のドメインに存在するWebサーバーが必要であり、SSL接続を使用する必要があります。
静的IPを持つVPSがあります。自己署名証明書を作成し、この証明書を使用するシンプルなNode JS Webサーバーを作成しました。まず、webhookのトークンを確認する必要があります。
app.get('/webhook/', function (req, res) {
if (req.query['hub.verify_token'] === '<validation_token>') {
res.send(req.query['hub.challenge']);
}
res.send('Error, wrong validation token');
})
次に、このサーバーアプリケーションを起動し、Facebookアプリダッシュボードで確認と保存ボタンをクリックします。
このエラーメッセージがスローされます。
つまり、Facebookは自己署名証明書を受け入れたくないです。
これにはいくつかの質問があります。
Facebookメッセンジャーを使用するために、SSL証明書を使用する必要がありますか認証局からのみ提供
Facebookのメッセンジャーでの作業は、Telegramよりもはるかに困難です。
cloudflare を使用して、自己署名の代わりにhttpsを取得できます。または、 https://letsencrypt.org を使用できます
単にテストするために、localtunnelを使用できます。 https://localtunnel.me/
my bot をHerokuにデプロイすると、HTTPS接続がすぐに提供されます。ローカル開発では、ngrok
を使用します。これはHTTPS転送もサポートしています。
新規参入者のために、私は この小さなチュートリアル を書きました。コードの最初の行からHerokuの展開まで、Facebook Messenger(Bot)APIを使い始めたい人向けです。 Python flask
+ gunicorn
を使用していたため、Herokuはこのようなプロジェクトに最適であることがわかりました。セットアップするために、Herokuが残りを処理しました。
here から抽出:
新しいwebhookサブスクリプションでは、v2.5以降、安全なHTTPSコールバックURLを使用する必要があります。 Graph APIの次のバージョンでは、HTTPS以外のコールバックURLへの更新の送信を停止します。
。
そして here から、@ saturngodが言ったように:
自己署名証明書は、facebookでは受け入れられません。 Letsencrypt 証明書は完全に機能します。
ApacheでComodo SSLを使用しても同じエラーが発生しました。私の場合、SSLCertificateChainFileがなく、そのバンドルファイルと仮想ホスト設定のファイルへのパスをアップロードして、Apacheをリロードするだけでした。これは、ssls.comから購入したcomodo SSLをインストールするためのリンクです https://helpdesk.ssls.com/hc/en-us/articles/203482651-How-to-install-a-SSL-certificate-on -Apache 。
Webフックを確認するには:-
$_REQUEST["hub_token"] and $_REQUEST["hub_challenge"];
最初にページトークンのトークンを確認してから、印刷します:-
echo $_REQUEST["hub_challenge"];
exit;