2016-04-13 8 views
0

私はubuntuサーバー(14.04.4 LTS)でnode.js(v5.10.1)を実行しています。 npm(@ kikinteractive/kik)がインストールされています。ここで kik botサーバーはPOSTを受信して​​いますがbot.onTextMessage(...)は応答していません

https://www.npmjs.com/package/@kikinteractive/kik

は私が書かれているserver.jsファイルです:

'use strict'; 

const util = require('util'); 
const http = require('http'); 
const Bot = require('@kikinteractive/kik'); 

const port = 80; 

let bot = new Bot({ 
    username: 'botnamehere', 
    apiKey: 'blablabla-1001-0110-1001-2112blablabla' 
}); 

bot.onTextMessage((message)=>{ 
    message.reply(message.body); 
}); 


var server = http.createServer(bot.incoming()); 
server.on('request', function (request, response) { 
    bot.incoming(); 
    // I added this to write the request 
    // so that I could verify my server was receiving from kik 
    console.log(request.method); 
    console.log(request.headers); 
    console.log(request.url); 
    var fs = require('fs'); 
    fs.writeFile("./logfile.log", JSON.stringify(request.headers), function(err) { 
     if(err) { 
      return console.log(err); 
     } 
     console.log("The kik request was saved!"); 
    }); 

}); 

server.listen(port); 

注:IPアドレスは、KIK構成のウェブフックを使用した、サーバがポート80

をリッスンしています

私はKIK構成は(キーデータは、このポストされた質問のために交換されている)ここに示されている私のサーバーでPOSTリクエストでKIKアプリの結果から、テキストメッセージ、として正しいと思われることを知っている:

{「ホスト」 「x-kik-username」:「botname」、「x-cloud-trace-context」、「x-kik-signature」、「x-kik-signature」、「x-kik-signature」:「8-bit- : "272c0f7616d6189bla9540d1e47668f5/5407793903926111947"、 "content-length": "307"、 "connection": "キープアライブ"、 "user-agent": "AppEngine-Google; ";" accept-encoding ":" gzip、deflate、br "}

そして私は私のサーバがkikにメッセージを送ることができることを知っています。そして、KIKアプリで受信したメッセージを確認:

bot.send(Bot.Message.textを( '何!')、 'ユーザ名');

そこで質問です:私の設定が正しいと思われる場合は、私のサーバでPOSTを確認することができ、サーバからkikにメッセージを送ることができるようにkik npmが正しくインストールされているという点で、bot.incoming()とbot.onTextMessageはなぜ私のサーバ大きな、ダム、高価なレンガ?何が足りないのですか?

ご協力いただきまして誠にありがとうございます。

ありがとうございます。

+0

を行うことによって、それを指定することができます。どんなに私はonTextMessageハンドラで試してみましたが、何KIKドキュメントが提供するすべての例を使用して、任意のは、私は、他の場所のいずれも認められませんserver.jsのサンプルは私のサーバー上で期待どおりに動作しました。しかし、私はconsole.logを追加する(要求。ヘッダー)、私は私のサーバーがKikからPOSTを受け取ることがわかります。何の中に? – tbmac3

答えて

0

ウェブフックを適切に設定していることを確認してください。 スニペットでincomingPathオプションを指定しないので、デフォルトで/incomingになるので、webhookがhttp://1.2.3.5:80/incomingに設定されていることを確認してください。別のパスへのすべての要求は破棄されます。

そうしないと、あなたは明確にしないために

let bot = new Bot({ 
    username: '...', 
    apiKey: '...', 
    incomingPath: '/yourincomingpath' 
}); 
+0

incomingPathはまったく問題ではありませんでしたが、問題を指摘しました。ドキュメンテーションはbaseUrlがオプションであることを示しているようだ、とにかく私が聞いていた場所である実行中のアプリケーションのbaseUrlをデフォルトにすると仮定して、それを残した。私は3つのことをしました。ポート8080を使用するように構成を変更しました(これはおそらく必要ではありませんでしたが、私はそれらの例に合わせるためにやっていました)。 @ kikinteractive/kik(v2.0.2)の最新バージョンに更新しました。 kik設定のwebhookと "h ttp:// ipaddress:8080"と一致するようにbaseUrlを設定します。今それは動作します。ありがとう! – tbmac3

0
let server = http 
    .createServer(bot.incoming()) 
    .listen(process.env.PORT || 8080); 

これは機能しますか?

私は正確な問題は何か分かりませんが、それが間違いなく機能するかどうかはわかりません。

0

ウェブフックにIPアドレスを使用していることをご説明しました。そのIPがローカルの場合、Kik APIはサーバーにメッセージを送信できません。

https://ngrok.com/のようなサービスを使用して、開発中にサーバーをKikに公開することをお勧めします。あなたの端末でngrok start 8080を実行すれば、すべてをローカルマシンの8080ポートにリダイレクトするURLが得られます。

+0

IPアドレスはパブリックです。私のサーバーはkikユーザーからPOSTを受け取りますが、onTextMessageはkikユーザーへの応答をトリガーしません。 – tbmac3

関連する問題