[Resolvido] Atendimento humano via Desk com SDK C#


#1

Bom dia pessoal,

Estou tentando implementar a transferência para atendimento humano através de SDK C# utilizando a plataforma BLiP Desk. Já implementei com sucesso outras alternativas, como SDK utilizando a antiga plataforma Blip Web (c/router) e também chatbot com Builder acessando o BLiP Desk. Porém ainda não consegui habilitar SDK com o BLiP Desk.

Implementei um bot de teste onde habilitei o canal de atendimento. Não criei nenhuma regra adicional, apenas cadastrei um usuário para atendimento que aparece como on-line quando estou logado (tudo aparentemente correto).

Copio abaixo fragmentos de como estou fazendo a transferência do atendimento:

    public PlainTextMessageReceiver(ISender sender, Settings settings,
                                    ...
                                    IHelpDeskExtension deskExtension
                                    )
    {
        _sender = sender;
        _settings = settings;
        ...
        _desk = deskExtension;
    }

public async Task ReceiveAsync(Message message, CancellationToken cancellationToken)
{

try
{
await _desk.ForwardMessageToAttendantAsync(message, cancellationToken);
}
catch (Exception e)
{
Logger.LogError(e.ToString());
}

    ...
    }

Sempre recebo esta exceção no comando “ForwardMessageToAttendantAsync”:
fail: Take.Blip.Client.IMessageReceiver[0]
System.NullReferenceException: Object reference not set to an instance of an object.
at TesteBOT.Receivers.PlainTextMessageReceiver.d__16.MoveNext() in C:\Users\Fernando.ASPIN\source\repos\TesteBOT\Receivers\PlainTextMessageReceiver.cs:line 597

Já tentei passar outro objeto Message definindo From e To conforme documentação para requisição HTTP, mas sempre retorna este mesmo erro.

Alguma sugestão?
Obrigado.


#2

Olá @Fernando_Bellin, obrigado por reportar.
O erro que você está enfrentando é um bug no nosso SDK C#.

Já criei um ticket de correção para a equipe.
Assim que tudo estiver resolvido te aviso por aqui, ok?


#3

Olá Rafael,
Certo, obrigado!


#4

Passei pelo mesmo problema e resolvi da seguinte maneira:

private readonly ISender _sender;
private readonly Settings _settings;

    public BaseMessageReceiver(ISender sender, Settings settings)
    {
        _sender = sender ?? throw new ArgumentNullException(nameof(sender));
        _settings = settings ?? throw new ArgumentNullException(nameof(settings));
        HelpDeskExtension = new HelpDeskExtension(sender);
    }

    public IHelpDeskExtension HelpDeskExtension { get; }

    public async Task ReceiveAsync(Message message, CancellationToken cancellationToken)
    {
        await HelpDeskExtension.ForwardMessageToAttendantAsync(message, cancellationToken);
    }

#5

Olá pessoal, (@Rodrigo_de_Freitas_O e @Fernando_Bellin)

o problema reportado já foi devidamente solucionado e está disponível na versão 0.5.190-beta.
Muito obrigado por reportarem.

PS: Adicionei um projeto completo para o teste de um bot que utiliza atendimento humano usando o SDK C#.
Para visualizarem vejam o link https://github.com/takenet/blip-sdk-csharp/tree/master/src/Samples/HelpDesk