Я пытаюсь получить номер int (1-4) через Backchannel, а затем передать его первому диалоговому окну.
Мой контроллер сообщений выглядит следующим образом:
private int option = 1;
/// <summary>
/// POST: api/Messages
/// Receive a message from a user and reply to it
/// </summary>
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message)
{
try
{
var connector = new ConnectorClient(new Uri(activity.ServiceUrl));
Activity isTypingReply = activity.CreateReply();
isTypingReply.Type = ActivityTypes.Typing;
await connector.Conversations.ReplyToActivityAsync(isTypingReply);
await Conversation.SendAsync(activity, () => new Dialogs.MenuDialog(option));
}
catch (Exception e)
{
//SendEmail(e);
}
}
else
{
await HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
private async Task 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)
{
}
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)
{
}
else if (message.Type == ActivityTypes.Event && message.Name == "option")
{
// var reply = message.CreateReply();
//reply.Text = message.Value.ToString();
// ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl));
// await connector.Conversations.ReplyToActivityAsync(reply);
if (message.Value.ToString() == "1")
{
option = 1;
}
else if (message.Value.ToString() == "2")
{
option = 2;
}
else if (message.Value.ToString() == "3")
{
option = 3;
}
else if (message.Value.ToString() == "4")
{
option = 4;
}
else
{
option = 1;
}
}
return;
}
Метод Backchannel вызывается вправо, и значение параметра устанавливается, когда я печатаю его в конце функции.Но затем, когда приходит первое сообщение, бот всегда использует значение по умолчанию «1».Он работал раньше, но теперь перестал работать, и я не понимаю, почему.