我们不能使用webhook响应中的displayText以外的任何内容

时间:2017-04-24 09:23:07

标签: webhooks dialogflow

我是api.ai的新手,我正在做webhook实现。我注意到只有来自webhook响应的“speech”或“displayText”才会显示给用户。是否有任何技术可以使用响应中的任何其他参数?

我很高兴,如果有人告诉我如何格式化响应文本,如使其变为粗体,更改字体等。

谢谢!

1 个答案:

答案 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);
		}
	});
}




希望有所帮助