我正在使用Dialog流编写一个Slack机器人。我想使用Slack blocks来响应履行请求。不幸的是,每当我在回复中加入blocks
时,我的机器人就会停止工作。
这就是我现在拥有的:
return {
status_code: 200,
headers: { "Content-Type": "application/json" },
body: {
payload: {
slack: {
blocks: [{
type: "section",
text: {
type: "mrkdwn",
text: "_No logs matched_ :iggy-ghastly:"
}
}]
}
}
}
};
此代码返回带有JSON正文的HTTP 200。当我使用text
负载时,效果很好:
payload: {
slack: {
text: "this shows up"
}
}
Dialogflow是否支持Slack块?有网上的例子吗?如何更好地调试与Dialogflow的交互?
答案 0 :(得分:0)
块工具包的有效负载将需要用于Dialogflow的响应有效负载的附件。
{
"slack": {
"attachments": [
{
"blocks":[
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "_No logs matched_"
}
}
]
}
]
}
}
如果您不需要像Block Kit这样的精美UI,并且对附件格式的响应没问题,请查看slack attachements可以做什么。
您可以通过在对话框流中添加响应custom payload来进行测试
如果要使用Block Kit而不是附件格式。您可以使用空响应来响应履行请求。然后使用slack API chat.postMessage methods将消息直接从服务器发布到散件套件格式的备用邮件中。
const rp = require('request-promise');
let postOptions = {
uri: 'https://slack.com/api/chat.postMessage',
method: 'POST',
headers: {
'Content-type': 'application/json',
'Authorization': `Bearer ${YOUR_BOT_TOKEN}`,
},
json: {
//Watch out dialogflow has different fulfillment request body
depends on if the user typed or clicked buttons
"channel": req.OriginalRequest.data.event.channel,
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "_No logs matched_"
}
}
]
}
}
rp(postOptions, (error, response, body) => {
if (error) {
console.log(error)
}
})
希望以上信息对您有所帮助。