图片显示在 Dialogflow 的默认响应中,但不显示在 Facebook Messenger 响应中(为什么?)

Image is displayed on Default resposnse of Dialogflow but not in Facebook Messenger response (why?)

我创建了一个聊天机器人并成功地尝试通过卡片响应传递 GIF 图像。但是,在 DialogFlow 上可以很好地查看响应,但 Chatbot Messenger 不显示任何内容。

这就是我对图片的称呼:

# Function 4 --------------------------------------------------------------------------------------------------

def rerun_conversation(req):

    rerun_conversation_text=req.get('queryResult').get('parameters').get('rerun_again')

    if rerun_conversation_text == "No" or rerun_conversation_text == "no":

        return {"fulfillmentMessages": [
            {
      "card": {
        "title": "Enjoy the film",
        "imageUri": "https://lh6.googleusercontent.com/lVo4excFqlywxK4iJ-ITrB0QGZR8ZSF59bL46eXylYCjYRA-8J2YqcSosA-AVE8sdcC2tvnKpUBhlYHS9gu6=w1919-h1007"
      }
    }
  ]
}

    elif rerun_conversation_text == "Yes" or rerun_conversation_text == "yes":

        return {"followupEventInput": {"name": "KellyMovieBot","languageCode": "en-US"}}

Dialogflow 中的输出:

但在 Facebook Messenger 中 return 什么都没有

我进行了更新 - 2020 年 7 月 29 日 - 22:10


        return {"fulfillmentMessages": [
    {
      "platform": "FACEBOOK",
      "card": {
        "title": "Title: this is a title",
        "subtitle": "This is an subtitle.  Text can include unicode characters including emoji .",
        "imageUri": "https://lh6.googleusercontent.com/lVo4excFqlywxK4iJ-ITrB0QGZR8ZSF59bL46eXylYCjYRA-8J2YqcSosA-AVE8sdcC2tvnKpUBhlYHS9gu6=w1919-h1007",
        "buttons": [
          {
            "text": "This is a button",
            "postback": "https://assistant.google.com/"
          }
        ]
      }
    }
  ]
}

这似乎适用于 Facebook Messenger 响应,但图像再次显示在 Dialogflow 而不是 Facebook Messenger 中。代码取自 SO 问题。

仍然在 Messenger 中,问题仍然存在

但是,当我放入不同的图像时,显示成功...gif图像来自Drive是否重要?但是 Dialogflow 没有任何问题,只有 Messenger 有。

不同的静态图片

更新 30.07.2020 - 基于评论

正在更改此图片 uri“https://lh6.googleusercontent.com/lVo4excFqlywxK4iJ-ITrB0QGZR8ZSF59bL46eXylYCjYRA-8J2YqcSosA-AVE8sdcC2tvnKpUBhlYHS9gu6=w1919-h1007”

https://drive.google.com/file/d/1onUvzmNd4cvg4maSA6EpW5uu3py8jYZE/view?usp=sharing

结果如此(所以我想仅仅从驱动器中共享图像是不够的):

因此,Image Response(包括卡片)的基本要求是 URL 应该 public 可以访问。我刚刚检查了您的图片的 URL,它给出了 403 错误。你应该做到 public 然后我想它会起作用。作为附加信息,Facebook 支持以下图像格式:.jpg、.png、静态 gif、动画 gif。如果您的图片不是上述格式之一,您应该将 it.Here 的 link 转换为 reference

搜索 6 小时后解决:

gif 图像应通过图像响应类型而不是卡片传递

        return {
  "fulfillmentMessages": [
    {
      "platform": "FACEBOOK",
      "image": {
        "imageUri": "https://i.imgur.com/XgmBUUx.gif"
      }
    }
  ]
}

这在 Facebook Messenger 中得到了完美展示!