1

Nexmo からのインバウンド SMS を処理しようとしていますが、理解できません。私はNodeとExpressにも比較的慣れていません。彼らのドキュメントは、ここに示されているようにキャッチするためのWebhookのリクエストを送信していることを示しています。サンプルコードを試して、このようにルートファイルに追加しました

var url = require('url');

module.exports = function(app) {
    app.get('/webhook', function(request, response){
        var url_parts = url.parse(request.url,true);

        if (!url_parts.hasOwnProperty('to') || !url_parts.hasOwnProperty('msisdn') || !url_parts.hasOwnProperty('text'))
            console.log('This is not an inbound message');
        else {
            //This is a DLR, check that your message has been delivered correctly
            if (url_parts.hasOwnProperty('concat'))
            {
              console.log("Fail:" +  url_parts.status + ": " + url_parts.err-code  +  ".\n" );
            }
            else {
              console.log("Success");
              /*
               * The following parameters in the delivery receipt should match the ones
               * in your request:
               * Request - from, dlr - to\n
               * Response - message-id, dlr - messageId\n
               * Request - to, Responese - to, dlr - msisdn\n
               * Request - client-ref, dlr - client-ref\n
               */
            }

        }
        response.writeHead(200, {"Content-Type": "text/html"});
        response.end();
    });
};

これは、すべてのページをレンダリングするファイルであり、インバウンド データを受信するためだけにこの「/webhook」ページを作成しました。コールバック URL を nexmo に貼り付けると、それが確認されず、おそらく正しく処理していないと思います。

ここのサンプルコードは、 http.createServerでそれを示しており、このように異なる名前のトップレベルファイルを持っています

require('./app/server/routes')(app);

if (app.get('env') == 'development') app.use(errorHandler());


http.createServer(app).listen(app.get('port'), function(){
    console.log('Express server listening on port ' + app.get('port'));
});

代わりにここで捕まえようとするべきですか?または、クライアント側でこれを行う必要がありますか? この質問を確認しましたが、それがよくわかりません。ホストとして何を置くか、またはこれはまったく正しい方法ではありませんか? 私もこれを見て、上に投稿したコードはほとんど同じことをしていると思いました。どんな助けにも乾杯!

編集:次のような単純なアプリで動作しています:

var express = require('express');
var bodyParser = require('body-parser');
var url = require('url');
var app = express();

app.use(bodyParser.urlencoded({
  extended: true
}));

app.get('/:pagename', function(req,res) {
  var url_parts = url.parse(req.url,true);
  console.log(url_parts.query.msisdn);
  res.sendfile('public/' + req.params.pagename + '.html');
});

var port = process.env.PORT || 3333;
app.listen(port);

しかし、アプリでこれを完全に引き継ぐことはできません。どこに置くべきかまだわかりません。ルーターファイルにあると思っていましたが、ログファイルに nexmo からのリクエストが表示されないため、そこで何が起こっているのかわかりません。

4

0 に答える 0