2016-06-19 12 views
1

Ich habe versucht, eine einfache Chat-App basierend auf Twilios Beispiel (https://github.com/TwilioDevEd/ipm-quickstart-node) zu erstellen. Ich kann das schnell einrichten.Twilio Client-Fehler: Twilio IP-Messaging mit AWS Lambda/AWS API-Gateway

Ich möchte ein wenig ändern, dass

  1. , wenn ein Benutzer eine Nachricht über das Web-Interface sendet ( http://localhost:3000), es Twilio des Webhook auslöst.
  2. Dieser Webhook pingt einen AWS-API-Endpunkt, der einer AWS Lambda -Funktion zugeordnet ist.
  3. Diese AWS-Lambda-Funktion empfängt den Channel Sid, authentifiziert und antwortet einfach "what say you?"

Ich habe mein AWS Lambda und AWS API Gateway korrekt eingerichtet.

Hier ist eine Probe meines Lambda-Code:

'use strict'; 
var TWILIO = require('twilio'); 
var AccessToken = require('twilio').AccessToken; 
var IpMessagingGrant = AccessToken.IpMessagingGrant; 


var http = require("http"); 

module.exports.handler = function(event, context, cb) { 


    var accountSid = 'TWILIO-ACCOUNT-SID'; 
    var authToken = 'TWILIO-AUTH-TOKEN'; 
    var IpMessagingClient = TWILIO.IpMessagingClient; 

    var client = new TWILIO.IpMessagingClient(accountSid, authToken); 
    var service = client.services('TWILIO-SERVICE-SID'); 


    service.channels(event.ChannelSid).messages.create({ 
     body: 'what say you ?', 
     from: FROM 
    }).then(function(response) { 
     console.log("this is success"); 
     console.log(response); 
     //return context.done(); 
     return context.succeed(response); 
     //return cb(null, response); 
    }).fail(function(error) { 
     console.log("this is failure"); 
     console.log(error); 
     //return context.done(); 
     return context.fail(JSON.parse(error.errorMessage)); 
     //return cb(null, error); 
    }); 



}; 

Auf der Clientseite, Twilio gibt mir einen 50056 Fehler (https://www.twilio.com/docs/api/errors/50056), die sagt: "Webhook der Verarbeitung des Befehls abgebrochen". Laut den Dokumenten ist es möglich, dass meine Funktion keinen -Status zurückgibt, was keinen Sinn ergibt, da ich einen 200-Statuscode erhalte, wenn ich versuche, ihn mit PostMan zu pingen.

Bei der Überprüfung über die AWS Cloudfront-Protokolle wurde die Lambda-Funktion nicht einmal aufgerufen, sollte ich versuchen, die AWS-Lambda-Funktion über den Web-Interface-Chat auszulösen. Wenn ich jedoch versuche, diese AWS-Lambda-Funktion über Tools wie PostMan zu PINGEN, zeigt AWS Cloudfront-Protokolle, dass die Funktion aufgerufen wurde, obwohl keine Antworten gegeben werden, da der Channel-Sid nicht der richtige ist.

Wie löse ich den 50056 Fehler? Oder ist es möglich, dass Twilios IP-Messaging-Webhooks das PING von AWS-API-Endpunkten nicht zulassen?

Danke!

Antwort

2

Beantworten Sie meine eigene Frage: - wenn ich den Twilio Webhook zu GET Anfrage ändern, funktioniert es!

Also vermute ich, dass das AWS Lambda nicht so schnell auf POST-Anfragen antwortet oder dass Twilios Webhook auch für POST-Anfragen wirklich schnell erwartet.