public async Task <ResourceResponse> SendEndConversationAsync(IEndOfConversationActivity activity) { if (activity == null) { _logger.LogError("The activity is null"); return(null); } ResourceResponse resourceResponse = null; try { resourceResponse = await _botClient.Conversations.SendToConversationAsync((Activity)activity); } catch (UnauthorizedAccessException e) { _logger.LogError($"Failed to send message: {e.Message}"); } catch (Exception e) { _logger.LogError($"Failed to send message: {e.Message}"); } return(resourceResponse); }
public IEndOfConversationActivity CreateEndOfConversationActivity(ConversationReference conversation) { IEndOfConversationActivity endActivity = Activity.CreateEndOfConversationActivity(); if (conversation != null) { if (conversation.Conversation != null) { endActivity.Conversation = conversation.Conversation; } if (conversation.User != null) { endActivity.Recipient = conversation.User; } if (conversation.Bot != null) { endActivity.From = conversation.Bot; } } endActivity.Text = string.Empty; return(endActivity); }
static async Task EndConversationAsync(Conversation conversation, DirectLineClient client) { IEndOfConversationActivity activity = Activity.CreateEndOfConversationActivity(); activity.From = new ChannelAccount(Message.ClientID); await client.Conversations.PostActivityAsync( conversation.ConversationId, activity as Activity); }
public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken) { if (turnContext.Activity.Type == ActivityTypes.ConversationUpdate && turnContext.Activity.MembersAdded != null) { var replyActivity = MessageFactory.Text($"{conversation.WelcomeMessage}"); await turnContext.SendActivityAsync(replyActivity, cancellationToken); } else if (turnContext.Activity.Type == ActivityTypes.Message) { if (turnContext.Activity.Text.Contains("agent") | conversation.EscalationDictionary.ContainsKey(turnContext.Activity.Text)) { Dictionary <string, string> endConversationContext = new Dictionary <string, string>(); if (conversation.EscalationDictionary.ContainsKey(turnContext.Activity.Text)) { endConversationContext = conversation.EscalationDictionary[turnContext.Activity.Text]; } await turnContext.SendActivityAsync("Transferring to an agent, who can help you with this. Please remain online…"); Dictionary <string, object> handOffContext = new Dictionary <string, object>() { { "BotHandoffContext", "Specialist request" }, { "skill", "service" } }; var handoffevent = EventFactory.CreateHandoffInitiation(turnContext, new { MessageToAgent = "Issue Summary: billing question", Context = handOffContext }); // Transcript is persisted by Omnichannel await turnContext.SendActivityAsync(handoffevent); } else if (turnContext.Activity.Text.ToLower().Contains("end")) { await turnContext.SendActivityAsync("Thanks for talking with me. Have a good day. Bye."); IEndOfConversationActivity endOfConversationActivity = Activity.CreateEndOfConversationActivity(); await turnContext.SendActivityAsync(endOfConversationActivity); } else { await HandleConversation(turnContext, cancellationToken); } } }
protected virtual Task ReceiveEndOfConversation(IBotContext context, IEndOfConversationActivity endOfConversationActivity) { return(Task.CompletedTask); }