2017-02-23 20 views
2

我想給我的BOT介紹。當用戶被添加到他們的對話/聯繫人列表中時。我已經通過處理ActivityTypes.ConversationUpdate消息類型進行了嘗試。但它不適用於Skype。有沒有什麼常見的方法可以在所有渠道中使用。有什麼方法可以確定我的機器人已添加到對話/聯繫人列表中嗎?

這是我使用的代碼:

public async Task<HttpResponseMessage> Post([FromBody]Activity activity) 
    { 
     ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); 
     if (activity.Type == ActivityTypes.Message) 
     { 

      // calculate something for us to return 
      int length = (activity.Text ?? string.Empty).Length; 

      // return our reply to the user 
      Activity reply = activity.CreateReply($"You sent {activity.Text} which was {length} characters"); 
      await connector.Conversations.ReplyToActivityAsync(reply); 
     } 
     else if(activity.Type == ActivityTypes.ConversationUpdate) 
     { 
      StateClient stateClient = activity.GetStateClient(); 
      BotData userData = await stateClient.BotState.GetUserDataAsync(activity.ChannelId, activity.From.Id); 

      if (!userData.GetProperty<bool>("SentGreeting")) 
      { 
       Activity reply = activity.CreateReply($"Hi " + activity.From.Name + ", I'm the Microsoft Bot"); 
       userData.SetProperty<bool>("SentGreeting", true); 
       await stateClient.BotState.SetUserDataAsync(activity.ChannelId, activity.From.Id, userData); 
       await connector.Conversations.ReplyToActivityAsync(reply); 
      } 
     } 
     var response = Request.CreateResponse(HttpStatusCode.OK); 
     return response; 
    } 

works here 預先感謝。

+0

我無法幫助您解決問題,但其他人可能會詳細說明您如何嘗試做到這一點 – gismo

+0

@gismo現在添加了代碼。這適用於模擬器和網絡聊天。不工作在Skype中。有什麼建議麼? –

+0

您是否收到ConversationUpdate事件? – Phito

回答

2

Skype通道不發送ConversationUpdate消息。 Bot Framework EmulatorWebChat等渠道做。在收到用戶在Skype頻道的消息之前,沒有辦法向用戶發送消息。

相關問題