Ich habe einige Probleme mit der MicrosoftGraph Webhook. Ich denke, dass ich HTTP-Antwort nicht richtig zurückgebe, weil, wenn ich eine binding.pry in meinen Controller setze, nach der Anfrage den Controller trifft.Rails: Microsoft Graph Webhook - 400 Abonnement Validierung Zeitüberschreitung
Die Anfrage scheint jedoch Timeout zu sein, bevor sie meinen Controller trifft (siehe Stack-Trace unten). Hier ist mein Controllercode und Abonnementanforderungscode und Stack-Trace. Ich schätze die Hilfe sehr. ("Timed Abonnement Validierung Anfrage aus." Von "https://graph.microsoft.com/v1.0/subscriptions" 400 INVALIDREQUEST):
def self.create_subscription(user)
callback = Proc.new do |r|
r.headers['Authorization'] = "Bearer #{user.outlook_token.access_token}"
r.headers['Content-Type'] = 'application/json'
r.headers['X-AnchorMailbox'] = user.email
end
path = 'subscriptions'
data = {
changeType: "created, updated",
notificationUrl: "https://my_url/api/watch/outlookNotification",
resource: "me/mailFolders('Inbox')/messages",
expirationDateTime:"2017-08-19T06:23:45.9356913Z",
clientState: "subscription-identifier"
}
graph = MicrosoftGraph.new(base_url: 'https://graph.microsoft.com/v1.0',
cached_metadata_file: File.join(MicrosoftGraph::CACHED_METADATA_DIRECTORY, 'metadata_v1.0.xml'),
&callback)
response = graph.service.post(path, data.to_json)
end
def outlook_webhook
@token = params[:validationToken]
head 200, content_type: "text/plain", content_length: 7
response.body = @token
end
Completed 500 Internal Server Error in 14613ms (Active 478.4ms)
OData :: ClientError:
app/Modelle/outlook_wrapper.rb: 44: increate_subscription'
Index‘
app/controllers/business/messages_controller.rb:18:in/Users/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gem Tragenes s/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rettet/_source.erb (7.9ms) gerendert /Users/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/ Gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rettet/_trace.text.erb (1.9ms) Gerendert /Users/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0 /gems/actionpack-4.2.4/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb (3.8ms) Gerendert /Users/.rbenv/versions/2.1.2/lib/ruby/gems/2.1 0,0/Edelsteine / Action-4.2.4/lib/action_dispatch/Middleware/templates/Rettungen/diagnostics.text.erb (176.2ms)
POST gestartet „/ api/watch/outlookNotification? validationToken = YTJhMTk5MDQtYjdmOC00ZjYx LWIzOGEtMDczM2FjMTAxZTBj“ für 52.161.110.176 bei 2017.08.23 00.29.05 -0400 Verarbeitung von InboundEmailsController # outlook_webhook als HTML-Parameter: { "validationToken"=> "YTJhMTk5MDQtYjdmOC00ZjYxLWIzOGEtMDczM2FjMTAxZTBj"} 200 OK in 35ms (Active Abgeschlossen: 0.0.0.0)
Jordan, danke für die Antwort, das habe ich seitdem geändert. Ich habe die Lösung in der Produktion arbeiten. Mein Timeout-Server läuft jedoch immer noch ab, bevor eine Antwort zurückgegeben wird. Hast du irgendwelche Ideen, warum mein Localhost nicht schnell genug antworten würde? –
Ich habe meine Antwort aktualisiert, um die Zeitüberschreitung zu beheben. – jordanbtucker
Hallo Jordan, sorry ich hätte angeben sollen, dass ich mit Ngrok meine Anwendung bereits tunnell benutze. Ich entschuldige mich. Ich verstehe wirklich nicht, warum es nicht funktioniert. Ich habe sogar meinen Widder aktualisiert, meinen Rechner aufgeräumt, um die Leistung zu verbessern, also weiß ich wirklich nicht ... –