로컬로 잘 작동하는 개발 한 채팅 봇에 어려움을 겪고 있지만 dev.botframework.com에 배포 한 후에는 제대로 작동하지 않습니다.배포 된 Chatbot에 대한 인증 실패
내 코드가 아래에 있고 줄에서 깨졌습니다. Conversation.SendAsync (activity,() => new MyBot.AppServices.ServiceLUIS()); { "Microsoft App ID a8641a16-932c-49a5-af8b-a58ab2ce251f에 대한 인증이 상태 코드 Unauthorized 및 이유문 'Unauthorized'로 실패했습니다.}}.
나는 다음과 같은 결과로 Troubleshooting Bot Framework Authentication의 지침을 시도 :
- 1 단계 : 로컬 호스트에 암호없이 연결 - 일 벌금을!
- 2 단계 : AppID와 비밀번호가 올바른지 확인 - 해당 사항!
- 3 단계 : 로컬 호스트에서 보안 설정 및 실행 - 작동하지 않습니다. (그러나 끝점은 MicrosoftAppID 및 암호와 동일합니다.
- 4 단계 : 봇 프레임 워크 개발자 포털을 사용하여 봇에 연결 -이 방법은 작동합니다. 그러나 포털 내에서 웹 채팅 기능을 사용할 때도 내부 서버 오류가 발생합니다.
내 LUIS 서비스에 대한 호출로 인해 내 Bot가 권한이없는 것 같습니다. 내 LUIS 모델을 호출합니다.하지만 내 봇이 게시 된 Azure에서 아무것도 찾을 수 없는데 LUIS 모델은 내 BOT에 대한 액세스 권한을 LUIS 모델에 허용합니다 .Luis.ai 또는 Bot에서 아무것도 볼 수 없습니다. 프라 작업 포털.
해결 방법에 대한 아이디어는 실제로 도움이 될 것입니다.
namespace MyBot
{
[BotAuthentication]
public class MessagesController : ApiController
{
/// <summary>
/// POST: api/Messages
/// Receive a message from a user and reply to it
/// </summary>
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
try
{
if (activity.Type == ActivityTypes.Message)
{
**await Conversation.SendAsync(activity,() => new MyBot.AppServices.ServiceLUIS());**
}
else
{
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
var reply = HandleSystemMessage(activity);
if (reply != null)
await connector.Conversations.ReplyToActivityAsync(reply);
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
catch (Exception e)
{
return null;
}
}
private Activity HandleSystemMessage(Activity message)
{
if (message.Type == ActivityTypes.DeleteUserData)
{
// Implement user deletion here
// If we handle user deletion, return a real message
}
else if (message.Type == ActivityTypes.ConversationUpdate)
{
// Handle conversation state changes, like members being added and removed
// Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
// Not available in all channels
}
else if (message.Type == ActivityTypes.ContactRelationUpdate)
{
// Handle add/remove from contact lists
// Activity.From + Activity.Action represent what happened
}
else if (message.Type == ActivityTypes.Typing)
{
// Handle knowing tha the user is typing
}
else if (message.Type == ActivityTypes.Ping)
{
}
return null;
}
}
}
LUIS 모델에 LUIS 자격 증명을 설정 했습니까? –
@EzequielJadib - 답변 해 주셔서 감사합니다. 예, LUIS 응용 프로그램 ID와 구독 키가 모두 설정됩니다. 아니면 뭔가 다른 것을 의미 했습니까? – jgoraya
LUIS 대화 상자가 [Serializable] 속성으로 장식되어 있습니까? –