Я работаю с ботом в течение последних трех месяцев, мой бот закончил через веб-канал, прямую линию, телеграмму, и теперь я работаю на канале Skype, все в порядке, кроме сохранения и извлечения данных из таблиц Azure.Я получаю сообщение об ошибке «Неизвестный тип активности» в журнале портала Azure.
Мой код указан ниже:
Это основной класс rootdialog
using System;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;
using SimpleEchoBot.Formulário;
using Microsoft.Bot.Builder.FormFlow;
using SimpleEchoBot.Serviço;
using System.Collections.Generic;
using System.Text;
using AdaptiveCards;
using System.Threading;
namespace SimpleEchoBot.Dialogs
{
[Serializable]
public class RootDialog : IDialog<EntidadeCliente>
{
private string nome;
private string email;
public async Task StartAsync(IDialogContext context)
{
if (context.Activity.ChannelId == "telegram")
{
context.Wait(TelegramAsync);
}
else if (context.Activity.ChannelId == "skype")
{
context.Wait(SkypeAsync);
}
else
{
context.Wait(MessageReceivedAsync);
}
}
private async Task SkypeAsync(IDialogContext context,
IAwaitable<IMessageActivity> result)
{
context.Call(new NomeDialog(), NomeDialogResumeAfter);
}
private async Task NomeDialogResumeAfter(IDialogContext
context,IAwaitable<string> result)
{
try
{
nome = await result;
BuscarDadosAzure buscarDadosAzure = new BuscarDadosAzure();
EntidadeCliente cliente = new EntidadeCliente();
GravarDadosAzure gravarDadosAzure = new GravarDadosAzure();
cliente = buscarDadosAzure.PesquisarAtendimento(nome);
gravarDadosAzure.GravarDados(context, cliente);
await context.PostAsync($"Agora que já nos conhecemos { nome }, quais
seriam as informações poderia lhe ajudar?");
context.Wait(MessageReceivedAsync);
}
catch (TooManyAttemptsException)
{
await context.PostAsync("Me desculpe, não consegui registrar o seu
nome, agradecemos a sua visita.");
context.EndConversation(EndOfConversationCodes.UserCancelled);
}
}
}
Thisкласс для сохранения данных в Azure
public class GravarDadosAzure
{
public EntidadeCliente GravarDados(IDialogContext context,
EntidadeCliente cliente)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString2"));
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
Microsoft.WindowsAzure.Storage.Table.CloudTable table =
tableClient.GetTableReference("Usuario");
TableOperation insertOperation =
TableOperation.InsertOrReplace(cliente);
table.Execute(insertOperation);
return cliente;
}
Этот класс извлекает данные из Azure.
public EntidadeCliente PesquisarAtendimento(EntidadeCliente cliente,
[Optional] string
ConversationId)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString2"));
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("Usuario");
if (ConversationId == null)
{
TableQuery<EntidadeCliente> query = new TableQuery<EntidadeCliente>
().Where(TableQuery.GenerateFilterCondition("Nome",
QueryComparisons.Equal, cliente.nome));
BuscarEntidade(table, cliente, query);
}
else
{
TableQuery<EntidadeCliente> query = new TableQuery<EntidadeCliente>
().Where(TableQuery.GenerateFilterCondition("ConversationId",
QueryComparisons.Equal, ConversationId));
BuscarEntidade(table, cliente, query);
}
return cliente;
}