private async Task StartBotConversation() { try { client = new DirectLineClient(directLineSecret); conversation = await client.Conversations.StartConversationAsync(); new System.Threading.Thread(async() => { try { await ReadBotMessagesAsync(client, conversation.ConversationId); } catch (Exception) { } }).Start(); OnInit?.Invoke(); } catch (Exception) { } }
private async Task StartBotConversation() { client = new DirectLineClient(directLineSecret); conversation = await client.Conversations.StartConversationAsync(); new System.Threading.Thread(async() => await ReadBotMessagesAsync(client, conversation.ConversationId)).Start(); SetText(sendText, "Hi"); }
private void InitBotConnection() { //TODO: you should ideally use DirectLine Secret instead of Token clientBot = new DirectLineClient(ConfigurationManager.AppSettings["DirectLineToken"]); conversation = clientBot.Conversations.StartConversation(); worker = new BackgroundWorker() { WorkerSupportsCancellation = true }; worker.DoWork += Worker_DoWork; worker.RunWorkerAsync(); }
public CallState(IEnumerable <Participant> participants, Microsoft.Bot.Connector.DirectLine.Conversation conversation, string watermark) { this.Participants = participants; this.Conversation = conversation; this.Watermark = watermark; }
private async Task <Microsoft.Bot.Connector.DirectLine.Activity> PostToAgentBotAsync(Microsoft.Bot.Connector.DirectLine.Activity activityFromUser) { var directLineSecret = Configuration.ConfigurationHelper.GetString("AgentBot_DirectLine_Secret"); var agentStatusDB = Configuration.ConfigurationHelper.GetString("BotStatusDBConnectionString"); var dc = new DirectLineClient(directLineSecret); var agentStorage = new AgentStatusStorage(agentStatusDB); var agent = await agentStorage.QueryAgentStatusAsync(activityFromUser.Recipient.Id); ConversationStatus convStatus = null; //var agentConversations = await agentStorage.QueryConversationStatusAsync(agent.Id); try { var uri = new Uri("https://directline.botframework.com"); DirectLineClientCredentials creds = new DirectLineClientCredentials(directLineSecret); //lot into the bot framework DirectLineClient client = new DirectLineClient(uri, creds); //connect the client Microsoft.Bot.Connector.DirectLine.Conversations convs = new Microsoft.Bot.Connector.DirectLine.Conversations(client); //get the list of conversations belonging to the bot? Or does this start a new collection of conversations? Microsoft.Bot.Connector.DirectLine.Conversation conversation = null; if (string.IsNullOrEmpty(_agentConversationId)) { conversation = dc.Conversations.StartConversation(); _agentConversationId = conversation.ConversationId; } else { conversation = new Microsoft.Bot.Connector.DirectLine.Conversation() { ConversationId = _agentConversationId, }; } Logger.Info($"activityFromUser - From.Name:{activityFromUser.From.Name} - From.Id:{activityFromUser.From.Id}"); Logger.Info($"activityFromUser - Recipient.Name:{activityFromUser.Recipient.Name} - Recipient.Id:{activityFromUser.Recipient.Name}"); var toAgent = new Microsoft.Bot.Connector.DirectLine.Activity { Type = Microsoft.Bot.Connector.DirectLine.ActivityTypes.Message, Text = activityFromUser.Text, From = new Microsoft.Bot.Connector.DirectLine.ChannelAccount { Id = activityFromUser.From.Id,/*activityFromUser.From.Id,*/ Name = $"{activityFromUser.From.Name}@ocsuser" }, Recipient = activityFromUser.Recipient, ChannelId = agent.ChannelId, ChannelData = new DirectLineChannelData { RoundTrip = 0, ConversationId = _agentConversationId, UserID = activityFromUser.From.Id, UserName = activityFromUser.From.Name } }; var resp = await dc.Conversations.PostActivityAsync( conversation.ConversationId, toAgent); Logger.Info($"OCSBot::Dialog:PostToAgent() - {JsonConvert.SerializeObject(toAgent)}"); //convStatus = (await agentStorage.QueryConversationStatusAsync(agent.Id)).OrderByDescending(o => o.Timestamp).FirstOrDefault(); //convStatus.OCSDirectlineConversationId = conversation.ConversationId; //convStatus.OCSEndUserId = activityFromUser.From.Id; //convStatus.OCSEndUserName = activityFromUser.From.Name; //convStatus.OCSBotName = activityFromUser.Recipient.Name; //convStatus.OCSBotId = activityFromUser.Recipient.Id; //await agentStorage.UpdateConversationStatusAsync(convStatus); return(null); } catch (Exception exp) { Logger.Info($"OCSBot::PostToAgent() - Exception while posting to Agent:{exp.Message}"); throw; } }