不会触发Waterfall对话框中的提示操作?

时间:2019-12-05 15:35:26

标签: botframework azure-bot-service

屏幕截图

image

对话框 image

版本

4.6.0 使用直线在网站中使用

描述错误

我正在尝试在Bot会话的简介期间触发瀑布对话框。我想显示一些提示性卡片选项以及简介,并使用Waterfall遵循这些步骤。但是不幸的是,暗示性的行动没有被触发吗?是因为我可能需要将上下文传递给对话框并从该上下文而不是对话框上下文中触发提示性操作?

如果我从对话框中发送普通短信,则可以正常工作,但不建议采取措施 return await step.context.sendActivity('Welcome' );

预期行为

当我将Bot加载到网络中时,我希望看到Bot会向我提出一些建议性的卡片选项。它必须触发“欢迎”对话框并显示建议性的操作

建议采取措施的地方

例如:如果我在不调用对话框的情况下直接在async onTurn内触发了提示性操作,那么它将正常工作。但是,如果我采用这种方式,那么我将无法跟踪对提示性操作的点击,因此我想调用该对话框并在瀑布对话框中进行活动

  async onTurn(context) {
if (context.activity.name === 'webchat/join') {
var suggestlist = [{
                    type: ActionTypes.PostBack,
                    title: ji18n('option 1'),
                    value: { id: '1000000', type: 'option1' }
                }];



                var suggestedAction = MessageFactory.suggestedActions(suggestlist);

                return await step.context.sendActivity(suggestedAction);

}  
})

1 个答案:

答案 0 :(得分:0)

您的suggestList的title属性需要一个string值,但是ji18n()返回一个对象。我相信这就是阻止您的suggestedAction呈现的原因。

考虑实现doc中引用的以下内容:

.addDialog( new WaterfallDialog(MAIN_WATERFALL_DIALOG, [
  async ( step ) => {
    const activity = step.context.activity;

    const input = {
      "option1": [{
        "$": {
          "en-US": `This is "option 1" in English`,
          "fr-FR": `Il s'agit de "l'option 1" en anglais`
        }
      }]
    }

    const output = ji18n(input, activity.locale)
    console.log('Output ', output['option1'][0])

    const suggestList = [{
      type: ActionTypes.PostBack,
      title: output['option1'][0],
      value: { id: '1000000', type: 'option1' }
    }]

    const suggestedAction = MessageFactory.suggestedActions( suggestList )
    return await step.context.sendActivity( suggestedAction );
  }
]))

返回的英语结果为输出和按钮标题:

enter image description here

enter image description here

法语结果作为输出和按钮标题返回:

enter image description here

enter image description here

希望有帮助!