在Bot仿真器和生产之间的message.Attachments.ContentURL差异

时间:2016-05-19 09:43:13

标签: botframework

在我的机器人中(使用C#版本的BotBuilder)我希望收到用户的附件。

我通过处理message.Attachments对象接受它们。 在Emulator中运行附加文件时,我会得到ContentURL:

  

http://localhost:9000/content/8a684db8?file=IMG-20160503-WA0002.jpg

从这里我解析URL以获取文件名并将其存储在本地azure存储blob中。

当我将我的机器人部署到azure并从Telegram上传文件时(到目前为止我只连接了聊天应用程序),同样的文件会以这样的URL发布:

  

https://bcattachmentsprod.blob.core.windows.net/635994216000000000/3DOUR10S0J2IL4

从这里我正在丢失文件名,试图检查其他消息。附件属性它似乎不存在。在此URL上进行WebRequst,希望在标题中的某处具有文件名也不会呈现结果

这是在部署到Azure时发布URL的预期行为吗?如果是,我如何获取用户附加的文件名? 我似乎喜欢在模拟器下运行时如何形成ContentURL。

1 个答案:

答案 0 :(得分:0)

我不熟悉BotBuilder,但blob名称始终是用作该blob地址的URL的一部分。

存储模拟器使用众所周知的端点。对于Blob存储,URL将始终具有此地址,其中" mycontainer"是你的容器的名称和" myblob"是你的blob的名字。如您所见,blob名称是URL路径的一部分。

http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob

模拟器使用此URL格式,因为它正在寻址本地计算机上的资源。

在云端的Azure存储帐户中,网址将如下所示,其中" myaccount"是您的存储帐户的名称," mycontainer"是你的容器的名称," myblob"是blob的名称:

https://myaccount.blob.core.windows.net/mycontainer/myblob

在上面的示例中," file = IMG-20160503-WA0002.jpg"不是Blob存储URL的一部分。也许这是BotBuilder附加的?

请参阅以下主题以获取更多信息:

https://msdn.microsoft.com/en-us/library/azure/dd135715.aspx https://azure.microsoft.com/en-us/documentation/articles/storage-use-emulator/