我是api.ai的新手,我正在做webhook实现。我注意到只有来自webhook响应的“speech”或“displayText”才会显示给用户。是否有任何技术可以使用响应中的任何其他参数?
我很高兴,如果有人告诉我如何格式化响应文本,如使其变为粗体,更改字体等。
谢谢!
答案 0 :(得分:2)
请注意,如果您发送回复的客户端(例如Facebook Messenger)不支持粗体等特殊格式,则此操作无效。
也就是说,除了纯文本之外,您可以发送更多更丰富的响应类型,如果您想以编程方式执行此操作而不是在API.ai中构建丰富的响应,我建议您注入自定义服务器端客户端和API.ai之间的解决方案,而不是在流程结束时使用它。
换句话说: 客户端界面< - >自定义解决方案< - > API.ai 而不是 客户< - > API.ai< - >自定义履行
这为您提供了更多的自定义和实现选项,包括构建完全自定义的响应/提示逻辑,甚至无需访问API.ai端点,或在处理后进一步编辑API返回,例如将数据库查询结果附加到文本API.ai履行。
假设您有这样的设置,在node.js中,向Facebook Messenger发送比文本更高级的有效负载的解决方案如下所示:
//Send gif or image reply
function sendGifMessage(recipientId) {
var messageData = {
recipient: {
id: recipientId
},
message: {
attachment: {
type: "image",
payload: {
url: config.SERVER_URL + "FILE LOCATION"
}
}
}
};
callSendAPI(messageData);
}
// Send custom payload buttons
function sendButtonMessage(recipientId, text, buttons) {
var messageData = {
recipient: {
id: recipientId
},
message: {
attachment: {
type: "template",
payload: {
template_type: "button",
text: text,
buttons: buttons
}
}
}
};
callSendAPI(messageData);
}
// Send quickReply buttons
function sendQuickReply(recipientId, text, replies, metadata) {
var messageData = {
recipient: {
id: recipientId
},
message: {
text: text,
metadata: isDefined(metadata)?metadata:'',
quick_replies: replies
}
};
callSendAPI(messageData);
}
function callSendAPI(messageData) {
request({
uri: 'https://graph.facebook.com/v2.6/me/messages',
qs: {
access_token: config.FB_PAGE_TOKEN
},
method: 'POST',
json: messageData
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
var recipientId = body.recipient_id;
var messageId = body.message_id;
if (messageId) {
console.log("Successfully sent message with id %s to recipient %s",
messageId, recipientId);
} else {
console.log("Successfully called Send API for recipient %s",
recipientId);
}
} else {
console.error("Failed calling Send API", response.statusCode, response.statusMessage, body.error);
}
});
}

希望有所帮助