Typescript 无法使用交互式消息在slack中呈现bot框架提示
我试图使用Slack的交互消息发布一个Slack块工具包JSON,用于一个部分和按钮。但是,我得到一个错误,表示通道数据无效 我尝试通过SlackAPI测试仪发布块JSON,它可以工作,但不能通过我编写的代码。我编写了一些自定义代码来覆盖bot框架中专门针对slack通道的提示函数 覆盖提示Typescript 无法使用交互式消息在slack中呈现bot框架提示,typescript,botframework,slack-api,Typescript,Botframework,Slack Api,我试图使用Slack的交互消息发布一个Slack块工具包JSON,用于一个部分和按钮。但是,我得到一个错误,表示通道数据无效 我尝试通过SlackAPI测试仪发布块JSON,它可以工作,但不能通过我编写的代码。我编写了一些自定义代码来覆盖bot框架中专门针对slack通道的提示函数 覆盖提示 public async prompt(stepContext: WaterfallStepContext, dialogId: string, options: PromptOptions): Pr
public async prompt(stepContext: WaterfallStepContext, dialogId: string, options: PromptOptions): Promise<DialogTurnResult> {
let promptText: string = '';
if (isString(options.prompt)) {
promptText = options.prompt;
} else if (isActivity(options.prompt)) {
promptText = options.prompt.text;
}
this.logger.log(`prompt: ${promptText}`);
const choices = options.choices.map((choice) => {
let text = '';
this.logger.log(`choice: ${choice}`);
if (isString(choice)) {
text = choice;
} else if (isChoice(choice)) {
text = choice.value;
}
// return { name: text, type: 'button', text: text, value: text };
return {
type: 'button',
text: {
type: "plain_text",
text: text
},
value: text
};
});
const channelData = {
text: '',
blocks: [
{
type: "section",
text:
{
type: "mrkdwn",
text: "Are you using a Mac or PC?"
}
},
{
type: "actions",
elements: choices
}]
};
this.logger.log(`channelData: ${JSON.stringify(channelData)}`);
return await stepContext.prompt('ChoicePrompt', { type: ActivityTypes.Message, channelData: channelData });
}
致电:
const channel = getChannel(step.context);
return await channel.prompt(step, 'ChoicePrompt', {
choices: buttons,
prompt: this.generateAssetInfoMessage(deviceType),
retryPrompt: `Sorry, I didn't understand. Please choose one of the following:`,
});
我希望看到一条带有两个按钮的消息,但我收到一个错误消息
[onTurnError]:错误:通道数据无效
下面是通道数据字符串化
{"text":"","blocks":[{"type":"section","text":{"type":"mrkdwn","text":"Are you using a Mac or PC?"}},{"type":"actions","elements":[{"type":"button","text":{"type":"plain_text","text":"I'm using a Mac"},"value":"I'm using a Mac"},{"type":"button","text":{"type":"plain_text","text":"I'm using Windows"},"value":"I'm using Windows"}]}]}
不幸的是,你没有做错任何事。我们只是还不支持 我已经提交了一个示例,以便我们可以将有效负载从channelData映射到适当的Slack API。在本地,您也无能为力,因为这依赖于API的私有/安全部分 但是,请注意,一旦实现,您可能会将其添加到邮件的channelData中,如下所示:
"channelData": {
"text": "Now back in stock! :tada:",
"blocks": [
[...]
]
编辑:您可以在本地执行此操作,但这将很困难,因为您无法直接使用Bot框架执行此操作。你必须在你的机器人内部使用。这是可能的,除了需要一个新的身份验证令牌外,您将拥有所需的所有数据。我目前正在尝试使用slack适配器作为解决方案,希望这能奏效。测试它。我相信你对每件事都有一个过程,但只是问。。。设计上的变化是什么样的?
"channelData": {
"text": "Now back in stock! :tada:",
"blocks": [
[...]
]