在我的机器人中(使用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。
答案 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/