当尝试使用带有axios或request-promise的nodejs将带有JSON正文的WakeUp event发布到Alexa events API时,API始终返回错误500。
我张贴到online endpoint上以实际查看发布的内容,并了解到发布主体被截断了,这显然导致了无效的json。我提取了问题,并尝试使用repl.it从原始的nodejs安装中运行它,结果是相同的。
有趣的是,页眉的长度和主体之间似乎存在某种关系。因此,当我在标头中缩短auth令牌时,主体的更多字符将被传输。如果我将体内的长标记缩短到大约450至500个字符(似乎有所不同),则整个请求都会通过。显然,这不是解决方案,因为身份验证需要令牌。
当我尝试使用axios版本将其降低到0.10时,我得到了一次结果,但再次发布导致另一个500。如果我发布的次数足够多,那么即使在当前axios版本上,某些请求也会完成。我也尝试过使用具有相同结果的request-promise。
我感到自己犯了一个非常愚蠢的错误,但我找不到它,而且在这个主题上我也真的找不到任何东西,这使我发疯。任何帮助将不胜感激!
答案 0 :(得分:0)
这看起来很棘手。.首先,我不认为您犯了一个非常愚蠢的错误。在我看来,一个低级模块之一由于某种原因(真的很怪异)不喜欢POST正文中的内容。.我已经对此进行了尝试,并且两个Axios的行为都完全相同和Request ..如果我注释掉令牌(correlationToken和Bearer令牌),一切正常。
如果我在本地进行测试,那么一切都会正常进行(例如,设置Express服务器并记录POST正文)。
也可以按预期的方式发布到https://postman-echo.com/post(带有原始发布数据)。
我在这里创建了此文件:https://repl.it/repls/YoungPuzzlingMonad
在我看来,对http://posthere.io的原始请求仅由于请求大小而失败。如果您尝试使用具有大型JSON正文的非常基本的POST,则会得到相同的结果。
我也用superagent得到了相同的结果..这使我相信这是服务器端的事情...
答案 1 :(得分:0)
这根本与发帖请求无关。发送WakeUp事件后发生错误的原因是缺少配置参数,该参数包含Alexa.WakeOnLANController接口中的MACAdresses。 我使用AlexaResponse类通过createPayloadEndpointCapability添加了功能,该功能尚未进行修改以支持“新的” WakeOnLANController接口。
可惜发现被接受并且我的支持WOL的设备已添加到我的智能家居设备中,尽管缺少必需的参数:(
posthere.io切断长的邮件正文花费了我几个小时的时间……从好的方面来说,我知道在节点中发出发帖请求的许多不同方式;)
再次感谢特里的调查!