Botframework bot框架未接收到Slack对话框。打开表单响应
我正在使用bot Builder SDK为Node.js构建bot 这个机器人是给懒汉用的 我已经按照文档正确配置了slack和botframework botframework、slack和节点服务之间的所有通信都是通过HTTPS进行的。 框架正在与slack正确通信 在下一步中,我将处理slack 首先,我在Bot Builder SDK中找不到任何方法,我甚至尝试打开slack对话框 最后,我能够打开与direct post的对话: 但当我提交表格时,我发现了一个错误: 我们在连接上遇到了一些问题。再试一次 请参见屏幕截图: 控制台显示以下错误: 请求URL: 响应:{“ok”:false,“error”:“curl_error”} “类型”为“对话框提交”的松弛发送有效负载 通过将“交互式组件->请求URL”更改为我的bot服务,我已经对此进行了测试。 使slack直接与我的机器人服务通信。 参考:中的“添加和配置交互式消息(可选)”部分 所以,当我点击submit按钮时,我确信消息是从对话框发送的 slack和我的bot服务之间的消息丢失。当请求URL设置为: 我从未收到任何服务正在接收消息的指示 请帮我解决这个问题 以下是我用来打开对话框的代码:Botframework bot框架未接收到Slack对话框。打开表单响应,botframework,slack,Botframework,Slack,我正在使用bot Builder SDK为Node.js构建bot 这个机器人是给懒汉用的 我已经按照文档正确配置了slack和botframework botframework、slack和节点服务之间的所有通信都是通过HTTPS进行的。 框架正在与slack正确通信 在下一步中,我将处理slack 首先,我在Bot Builder SDK中找不到任何方法,我甚至尝试打开slack对话框 最后,我能够打开与direct post的对话: 但当我提交表格时,我发现了一个错误: 我们在连接上遇到了
let RESTClient = require('node-rest-client').Client;
let FrameworkClient = new RESTClient();
let Promise = require('bluebird');
openDialogBox: function(token, trigger_id, callback_id) {
return new Promise(function(resolve, reject) {
var dialog = {
"title": "Issue Details",
"submit_label": "Submit",
"callback_id": callback_id,
"elements": [
{
"type": "text",
"label": "Pickup Location",
"name": "loc_origin"
},
{
"type": "text",
"label": "Dropoff Location",
"name": "loc_destination"
}
]
};
var args = {};
args.headers = {Authorization: 'Bearer ' + token, 'Content-type': 'application/json; charset=utf-8'};
args.data = {"trigger_id": trigger_id, "dialog": dialog};
FrameworkClient.post("https://slack.com/api/dialog.open", args , function(data, response) {
if (data && data.ok) {
resolve(data);
} else {
reject();
}
});
});
}
感谢@JasonSowers(工程师-微软机器人框架)
Microsoft Bot Framework目前不支持此操作
他们将来可能会支持这一点。我不知道Bot框架,但我已经为我的Slack应用程序实现了对话框。它们的工作原理与交互式消息非常不同。因此,如果您的框架没有正式支持它,我怀疑您是否能够使它工作。示例:任何对Slack的非空响应(可选错误属性除外)都将触发此错误。“我们在连接时遇到一些问题…”一些后续问题,您使用的是.net还是node sdk?你能分享一下你的代码吗?你已经做到了这一点?提交后,您的机器人是否有任何活动?谢谢Erik的回复。我认为它显示的错误实际上发生了,如果slack向其发布响应的请求URL在3秒钟内没有响应。@JatinderKumar在与团队讨论后,这不是通过bot框架可以完成的事情,我们不支持这一点。您可以通过在bot外部执行发送/接收并将结果数据发送到bot来实现这一点。感谢您提醒我们注意这一点,它现在在我们的雷达上,我们将在将来研究支持它。@JasonSowers任何时间线,我们什么时候可以期望它得到支持?ThanksHi@jatinder kumar,你找到另一种方法了吗?我在我的应用程序中将请求url更新为备用api,但我无法从新的请求url api post方法手动获取api令牌,如果我们将请求url用作Azure机器人服务url,则可以从ChannelData获取此令牌,但当我们使用自定义请求url时则不能,因为Azure存储了此令牌。任何帮助都将不胜感激。我已经添加了一个按钮,点击打开了对话框。从按钮单击事件中,您可以获得令牌。来自“session.message.sourceEvent”的Hi@jatinder kumar,感谢您的回复。你是说按钮点击松弛信息吗?我的意思是这个对象访问代码“session.message.sourceEvent”写在哪里?如果你能发布代码,那就太好了。您是否仍在使用MS bot框架?如果是这样,用户访问令牌将位于Azure中,对吗?是的,它是slack action按钮。点击该按钮,您将在为该按钮创建的bot句柄中得到回调。谢谢@jatinder kumar,但我的句柄上没有收到它。不知道我做错了什么。我收到的有效载荷如下。