- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Docker 和 C# 新手,正在尝试使用 Docker 将 microsoft bot 框架部署到 Heroku
我正在使用这个预先构建的示例:
https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/13.core-bot 我已使用正确的 Luis 凭据更新了应用程序设置。我使用此端点创建了一个 azure 机器人服务:https://mybotfram.herokuapp.com/api/messages
Then i updated the bot service credential in the app setting json.
{
"MicrosoftAppId": "****************************************",
"MicrosoftAppPassword": "********************",
"LuisAppId": "********************",
"LuisAPIKey": "********************",
"LuisAPIHostName": "westus.api.cognitive.microsoft.com"
}
我的文件夹看起来是这样的:
然后到正确的文件夹:
heroku container:login
heroku create myrepeat
heroku container:push web --app mybotfram
heroku container:release web --app mybotfram
我的 Dockerfile 如下所示:
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app
# copy csproj and restore as distinct layers
COPY ./*.csproj .
RUN dotnet restore
# copy everything else and build app
COPY ./. .
WORKDIR /app
RUN dotnet publish -c Release -o out
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
WORKDIR /app
# COPY ./*.bot ./
COPY --from=build /app/out ./
ENTRYPOINT ["dotnet", "CoreBot.dll"]
端点无法工作,我在 Heroku 日志中收到此错误,似乎没有任何东西可以正常工作。
2019-10-30T15:23:32.220067+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/api/messages" host=mybotfram.herokuapp.com request_id=edda2c79-ab2e-4258-8a17-38a145f06f06 fwd="13.94.246.37" dyno= connect= service= status=503 bytes= protocol=https
2019-10-30T15:25:52.90006+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/api/messages" host=mybotfram.herokuapp.com request_id=387e5fcf-7330-45f9-8751-d3c156618565 fwd="13.94.246.37" dyno= connect= service= status=503 bytes= protocol=https
2019-10-30T15:33:14.734976+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=mybotfram.herokuapp.com request_id=5b7a5fe7-9371-4911-a563-d3aeba8411c4 fwd="84.101.210.119" dyno= connect= service= status=503 bytes= protocol=https
2019-10-30T15:33:14.383936+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/api/messages" host=mybotfram.herokuapp.com request_id=75836fb3-afca-4725-9b00-1ffcdec0e2a1 fwd="84.101.210.119" dyno= connect= service= status=503 bytes= protocol=https
正如我所提到的,我对此很陌生,因此对上述内容的任何见解将不胜感激!
<小时/>________________________________________编辑__________________________________
<小时/>在回答 Mdrichardson 后进行编辑(非常感谢!)。
这是我根据您的输入重写 Program.cs 的方式。
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
using System;
namespace Microsoft.BotBuilderSamples
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args)
.UseKestrel()
.UseUrls("http://0.0.0.0:" + Environment.GetEnvironmentVariable("PORT"))
.Build()
.Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((logging) =>
{
logging.AddDebug();
logging.AddConsole();
})
.UseStartup<Startup>();
}
}
最佳答案
特别适合您:
503 错误通常表示您的客户端无法与机器人通信。
我的猜测是您需要更新您的 Program.cs
包含这个:
public static void Main(string[] args)
{
CreateWebHostBuilder(args)
.UseKestrel()
.UseUrls("http://0.0.0.0:" + Environment.GetEnvironmentVariable("PORT"))
.Build()
.Run();
}
Heroku 通过 PORT
提供公开端口环境变量。您的机器人只需要监听即可。
如果这对您不起作用,我建议从头开始并按照下面的教程进行操作
<小时/>从头开始让这个工作起来。
这大部分功劳应该归功于 Victor Reyes for this article ,因为我基本上做了同样的事情,但是使用了机器人。
以下教程将涵盖基础知识,并假设您了解一些有关开发机器人的知识。有关 Docker/Heroku 方面的更多详细信息,请参阅文章和 our official docs对于机器人方面的事情。
1.下载 CoreBot .
2.更新appsettings.json
包含您的机器人和 LUIS 信息。
3. 在本地运行应用程序并验证它是否可以在 Emulator 。这 测试您的机器人是否正常工作。
4. 在根文件夹中使用 .csproj
创建一个 dockerfile 。它 应该看起来像这样:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2.300-alpine3.9 as server
ENV ASPNETCORE_Environment=Production
ENV ASPNETCORE_URLS http://+:3978
WORKDIR /server
VOLUME ./wwwroot/Repository
COPY . ./
RUN dotnet publish -c Release -o publish
EXPOSE 3978/tcp
ENTRYPOINT ["dotnet","publish/CoreBot.dll"]
5. 从带有 .csproj
的根文件夹中文件,运行docker build -t <dockerImageName>:<tag> .
6.运行docker run -p 3978:3978 <dockerImageName>:<tag>
7. 在本地运行应用程序并验证它是否可以在 Emulator 中运行。 。这测试您的机器人是否作为 Docker 镜像运行。
8.更新您的 dockerfile,使其现在如下所示:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2.300-alpine3.9 as server
ENV ASPNETCORE_Environment=Production
WORKDIR /server
COPY . ./
RUN dotnet publish -c Release -o publish
ENTRYPOINT ["dotnet","publish/CoreBot.dll"]
9. 覆盖 Main()
在Program.cs
使其包含:
public static void Main(string[] args)
{
CreateWebHostBuilder(args)
.UseKestrel()
.UseUrls("http://0.0.0.0:" + Environment.GetEnvironmentVariable("PORT"))
.Build()
.Run();
}
10.运行以下命令:
heroku login
heroku container:login
docker login --username=_ --password=$(heroku auth:token) registry.heroku.com
11。 Create a Heroku App并记住它的
12.运行:
docker build -t registry.heroku.com/<appName>/web .
docker push registry.heroku.com/<appName>/web
heroku container:release web --app <appName>
13. 使用 https://<appName>.herokuapp.com/api/messages
在模拟器中进行测试和你的MicrosoftAppId
和MicrosoftAppPassword
注意:根据您的环境,您可能需要使用 0.0.0.0:3978
与 localhost:3978
相反。也许也值得尝试127.0.0.1:3978
.
关于c# - 使用 docker 将 microsoft bot 框架部署到 heroku 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58629014/
因此,我想创建一个 bot/incoming webhook 来读取群组中的所有消息并将其复制到电子表格中。我在这里要问的是,机器人或传入的 webhook 可以读取整个群组消息吗?在 google
我正在使用 Microsoft Bot Framework 开发一个机器人,在该机器人中,机器人将通过向用户发送一些图像来响应。我用 slack 和 skype 配置了它。 在 slack 中图像正在
我试图让我的机器人与用户开始对话,但我不知道应该从代码中的哪个位置发送消息。启动 convo 的文档在这里,但不是很有帮助:http://docs.botframework.com/connector
我正在创建 Telegram Bot 。我需要跟踪添加用户和添加用户的时间。我如何使用 Telegram API 来做到这一点? 最佳答案 在使用 Telegram API 的群组中,您可以调用 ne
我已经创建了几个 Telegram 机器人。它们适用于我的帐户,也适用于我测试过的其他几个帐户。 但我收到一些用户的报告,称机器人从不响应。 是否有一些用户设置会阻止帐户从机器人获取消息?或者任何其他
如果在一段时间内没有用户输入,我有一个关于取消提示或对话框的问题。 我需要一种方法来以某种方式在提示中超时。 Example: Bot prompts the user: "How old are y
我有一个用例,当我的机器人需要在一天中的特定时间向用户发送消息时。假设每天早上 6 点。 我正在使用预定的 azure Webjob 发送这些消息。消息将在 Slack 和 Skype 客户端中传递。
我是 Microsoft bot 的新手。我的公司有自己的通信应用程序,我想将我的机器人与通信应用程序连接起来,我的客户可以在我公司的通信应用程序上使用我的机器人。我读到它需要使用 Direct Li
我在 sdk V4 Bot 中实现了一个中间件来拦截 bot 和用户之间的每条消息并记录该自定义 mongo Db。我正在尝试为使用 SDK v4 构建的 Bot 实现类似的概念。看起来我可以使用以下
我对编程和学习还很陌生。我认为制作一个不和谐的机器人是一种很好的学习方式,我很享受,只是有点卡住了。所以我的机器人是私有(private)的,我们的不和谐服务器中有一个正在运行的笑话,每当用户发送“k
如何让机器人假装它正在输入消息? 当机器人假装输入时,聊天中会出现以下文本: 我使用 python aiogram框架,但对 native Telegram API 的建议也会有所帮助。 最佳答案 我
我有一个像这样的 Telegram Bot : 通过 webhook 获取更新 语言:C#(我也欢迎其他语言的回答) 我们有以下用户场景: 向机器人发送/MyPhoto a_parameter命令 向
我加入了一个 Telegram Bot ,但我不知道它的所有者。是否可以找到 Telegram Bot 的所有者? 最佳答案 根据 Telegram MTProto protocol 不可能看到 Te
我已经创建了一个电报机器人并按照文档中的描述设置了一个 webhook。出于测试目的,我已经设置了它,因此一旦您向机器人发送一条消息,它就会用相同的消息回复。 现在我遇到的问题是来自电报的更新非常缓慢
是否可以将位置从 Telegram 发送到 Bot,这是在 Bot Framework 中制作的? 我将我的位置从我的 Telegram 帐户发送到我的 Bot,但服务器没有收到它们(我没有收到回复)
我在 Telegram 上创建了一个组并创建了一个机器人并添加进来。 我正在尝试向我创建的组发送消息,错误如下所示 {"ok":false,"error_code":403,"description"
使用 Microsoft Bot Framework V3 我开始使用登录卡。 我从示例代码页做了一个简单的剪切并粘贴到我的代码中,假设它有效(编译): https://docs.botframewo
当用户刚刚打开聊天时,机器人如何向用户发送消息。 例子: 用户已经添加了 Telegram bot到他的联系人列表并开始对话 稍后,用户打开与该机器人的聊天窗口 机器人“看到”该用户已打开聊天窗口,但
将 XCode 更新到版本 11.4 (11E146) 后,我不再在机器人设置中看到存储库分支。但是我在 Source Controll Navigator 中看到了这些存储库分支。有谁知道我该如何解
我想将机器人的位置发送给用户,我在谷歌上搜索了很多,但我发现只有这种情况“将用户的位置发送给机器人”我想要相反的情况,意思是:“发送机器人的位置给用户”。这是我的想法:机器人的所有者是一个司机,他想与
我是一名优秀的程序员,十分优秀!