我试图使用session.send
通过会话发送JSON字符串化对象或附件,我在控制台中收到以下错误,并且没有从机器人那里得到任何响应。
错误:请求“https://smba.trafficmanager.net/apis/v3/conversations/SOMEHASHCODE/activities”失败:[400]错误请求
当我检查Microsoft Bot Framework中的Skype频道问题时,我看到以下有关JSON对象的消息
消息文本中的XML无效
以及附件的以下消息。
未知的附件类型
机器人在Slack和Emulator中完美运行。所以它一定不是代码的问题。
// JSON object
session.send(JSON.stringify(session.conversationData.inputData, null, 2));
// Attachment message
session.send(new builder.Message(session)
.text(`Here's the document:`)
.addAttachment({
contentUrl: `http://host:port/${filePath}`,
contentType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
name: 'Document.docx',
}));
发送的JSON对象是{"name": "Philip John", "id": "444411111111", "phone": "54545454", "email": "philip@john.com", "address": "Street 11 - 111, City , ", "job": "Software Tester", "date": "1st June 2017", "salary": "9000", "bankAccount": "DE121231231231231231" }
知道如何解决这个问题吗?
答案 0 :(得分:0)
回答问题#1:在Bot Framework消息中发送字符串化的JSON。
使用以下设置对JSON进行字符串化时:
JSON.stringify(inputJson, null, 2)
它使用换行符号生成输出,该符号设计为终端或浏览器控制台中的“漂亮打印”控制台输出,但在通过Bot Framework SDK作为消息发送时不会产生相同的格式。
// string output of JSON.stringify(inputJson, null, 2)
var stringified = = '{\n "name": "Philip John",\n "id": "444411111111",\n "phone": "54545454",\n "email": "philip@john.com",\n "address": "Street 11 - 111, City , ",\n "job": "Software Tester",\n "date": "1st June 2017",\n "salary": "9000",\n "bankAccount": "DE121231231231231231"\n}';
要在机器人消息中获得正确的换行符,您需要使用两个\n
个字符而不是一个。例如:
// bot formatted message string with line breaks
var botJsonMessage = '{\n\n "name": "Philip John",\n\n "id": "444411111111",\n\n "phone": "54545454",\n\n "email": "philip@john.com",\n\n "address": "Street 11 - 111, City , ",\n\n "job": "Software Tester",\n\n "date": "1st June 2017",\n\n "salary": "9000",\n\n "bankAccount": "DE121231231231231231"\n\n}';
回答问题#2:Bot Framework中支持的消息附件类型。
目前,contentType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
是不受支持的内容类型。请改用application/word
。