2017-02-16 36 views
0

我想知道如何將用戶的消息重定向到某個人,而不是讓該機器人處理該消息。假設客戶正在使用屬於公司的機器人進行交談的情況下,我希望如何讓所有內容都能正常工作:是否有可能允許兩個人通過使用Microsoft Bot Framework的chatbot進行對話?

用戶開始與機器人進行對話。

  • 機器人使用戶可以選擇與代表交談。

  • 從現在起,來自用戶的消息被重定向到 代表(在另一個軟件後面)。

  • 代表響應消息,它們被強制給用戶。

我已經對如何能夠實現這一目標給予了一些思考,到目前爲止我還沒有取得很大進展。將用戶消息重定向到另一個地方的部分看起來相當容易,因爲在用戶說他想與某人交談之後,我會在其上放置一個標誌UserData,用於將消息重定向到其他地方。

例子:

對話框裏面,這裏的LUIS意圖時,我真想上的UserData國旗:

[LuisIntent("SpeakWithEmployee")] 
public async Task IntentSpeakWithEployee(IDialogContext context, LuisResult result) 
{ 
    await context.PostAsync("This conversation will be redirected to a employee."); 
    context.UserData.SetValue<bool>("RedirectToEmployee", true); 
} 

現在在MessagesController這裏就是我正在做重定向用戶的留言:

public async Task<HttpResponseMessage> Post([FromBody]Activity activity) 
{ 
    if (activity.Type == ActivityTypes.Message) 
    { 
     StateClient state = activity.GetStateClient(); 
     BotData botData = state.BotState.GetUserData(activity.ChannelId, activity.From.Id); 
     bool redirectToEmployee = botData.GetProperty<bool>("RedirectToEmployee"); 

     if (redirectToEmployee) 
     { 
      ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); 
      Activity reply = activity.CreateReply(); 
      reply.Text = $"Echoe: {activity.Text}"; 
      await connector.Conversations.ReplyToActivityAsync(reply); 
     } 
     else 
     { 
      await Conversation.SendAsync(activity,() => new RootDialog()); 
     } 
    } 
    else 
    { 
     HandleSystemMessage(activity); 
    } 
    var response = Request.CreateResponse(HttpStatusCode.OK); 
    return response; 
} 

這看起來很容易。我的問題是找出員工回覆用戶的部分。我不知道如何實施下一部分。

我將需要使用DirectLine API以允許員工回覆用戶,對嗎?在該軟件上,該員工正在運行,我想我必須發送POST消息給機器人的端點,是嗎?

我還需要存儲用戶標識,活動標識和類似信息,以便允許員工的消息轉到正確的用戶。但是,當員工使用的軟件向機器人端點發送POST時,POST將不得不包含activity

無論如何,有關如何做到這一點的任何想法?

回答

0

是的,BotFramework可以。

基本上,你必須有兩個頻道或聊天來測試它。一個是代表註冊他作爲它的角色,並保持開放等待某人聊天。在另一個渠道中,您的客戶會嘗試使用機器人,直到機器人達到其可用性限制或客戶要求與人交談。在這最後一刻,你連接兩個人和機器人。客戶發送消息,機器人收到併發送給代表。該代表發送迴應,並將機器人發送給客戶。這沒有什麼大不了的。

您可以根據代表性狀態(免費聊天或在對話中)發展這個想法。

技術這個關鍵點是存儲代表和客戶數據(通道數據,用戶數據,會話數據)能夠發送響應。

相關問題