2017-06-16 43 views
0

我正在使用NodeJS和BotBuilder开发聊天机器人。我将文件chatbot.jpg存储在名为image的文件夹中。这位于根目录下方。我能够显示图像(使用捻找到URL)在Web浏览器如下:无法建立存储在Azure应用服务中的Bot Builder文件的URL

https://mysite.scm.azurewebsites.net/api/vfs/site/wwwroot/images/chatbot.jpg

如果我删除URL中的.scm元素,我再也不能显示图像。

更奇怪的是,如果我在我的机器人代码中使用上述URL,则图像不会显示。

var welcomeCard = new builder.HeroCard(session) 
.title("This is the new") 
.subtitle('Virtual Assistant') 
.images([ 
new builder.CardImage(session) 
.url("http://mysite.scm.azurewebsites.net/api/vfs/site/wwwroot/images/chatbot.jpg") 
alt("Virtual Assistant") 
]); 
session.send(new builder.Message(session) 
.addAttachment(welcomeCard)); 

我的问题是,如何找到出存储在Azure的应用程序服务中的图像经常URL,这样我可以在我的代码中使用它?

回答

0

来自公共网页,网址应该是https://mysite.azurewebsites.net/images/chatbot.jpg

wwwroot文件夹是由应用服务服务的根文件夹。

您的代码不能只是scm URL,因为该URL需要您登录到Azure门户;这是一个管理员网址。

+0

试过了。我在此URL上获得以下内容:{“code”:“NotAuthorized”,“message”:“/ images/chatbot.jpg”}:https://mysite.azurewebsites.net/images/chatbot.jpg。这听起来像是一个认证问题。但是,我可以访问机器人,它可以在Messenger上很好地运行。所以我不确定接下来要做什么。 –

+0

这意味着您已将身份验证切换到某个位置;它应该是正确的URL,匿名用户只是不允许访问它。 – Frans

+0

很明显,假设你的网址实际上并不是“神秘”的...... – Frans

0

要完成您的目标,您需要将Restify服务器配置为serve static files

例的RESTify配置(添加到您的机器人代码):

server.get(/\/images\/?.*/, restify.serveStatic({ 
    directory: './images' 
})); 
+0

试过以上。还是行不通。还试过目录:__dirname,再次没有运气。 –

+0

奇怪的是,当我将以下代码上传到Azure应用服务时,第一次运行bot时,图像显示。连续运行不显示图像。 server.get(/\/?.*/,restify.serveStatic({__dirname,__dirname, 默认值:'index.html', match:/^((??app.js).)*$/ source })); –

相关问题