Я пытаюсь использовать интерактивные сообщения Slack, чтобы опубликовать набор блоков Slack JSON для раздела и кнопок.Однако я получаю сообщение об ошибке Invalid ChannelData
Я попытался опубликовать блок JSON через тестер Slack API, и он работает, но не с помощью кода, который я написал.Я написал некоторый пользовательский код для переопределения функции подсказки в среде бота специально для слабого канала.
Переопределенная подсказка
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 });
}
вспомогательные функции:
function isString(str: any): str is string {
return typeof str === 'string';
}
function isActivity(obj: any): obj is Activity {
return obj && obj.text !== undefined;
}
function isChoice(obj: any): obj is Choice {
return obj && obj.value !== undefined;
}
Вызывается с помощью:
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]: Ошибка: недопустимые ChannelData Вот строковые данные канала
{"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"}]}]}