1

我正在尝试使用 UCWA(Lync web app) 实现双向聊天,我能够将数据发送到客户端,但我如何从该客户端接收回数据?实施适当的双向聊天?

我已附加代码以向特定用户发送一些 ping,我如何从用户接收数据以实现聊天?

       private void StarConversation(string startConversationLink, string hostName, string accessToken, string tokenType)
    {
        var myObject = new JObject();
        myObject.Add("operationId", Guid.NewGuid().ToString().Replace("-", ""));
        myObject.Add("to", "sip:xyz@abcd.com");
        myObject.Add("subject", "TestConv");
        List<string> outgoing = new List<string>();
        List<string> incoming = new List<string>();
        List<string> timeout = new List<string>();
        JObject href = new JObject();
        string sending = "Hey there ! how are you doing ?";
        href.Add("href", "data:text/plain;base64," + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sending)));
        JObject message = new JObject();
        message.Add("message", href);
        myObject.Add("_links", message);
       HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", tokenType + " " + accessToken);
        client.PostAsync(new Uri(hostName + startConversationLink), new StringContent(JsonConvert.SerializeObject(myObject), Encoding.UTF8, "application/json")).Result;
        if (response.IsSuccessStatusCode)
        {

            Uri temp = new Uri(hostName + m_eventsLink);
            HttpResponseMessage response2 = Get(client, temp.ToString());
            string nextLink = string.Empty;
            string timeo ;
            string ss = string.Empty;
             int i =0;
            if (response2.IsSuccessStatusCode)
            {
                string retData2 = response2.Content.ReadAsStringAsync().Result;
                var o = JObject.Parse(retData2);
                nextLink = o["_links"]["next"]["href"].Value<string>();

                response = client.PostAsync(new Uri(hostName + startConversationLink), new StringContent(JsonConvert.SerializeObject(myObject), Encoding.UTF8, "application/json")).Result;
                temp = new Uri(hostName + m_eventsLink);
                response2 = Get(client, temp.ToString());
                retData2 = response2.Content.ReadAsStringAsync().Result;
                o = JObject.Parse(retData2);

            }



             }
    }
4

1 回答 1

2

此时您正在做的是与用户开始对话并提供初始消息以与消息传递邀请一起使用。我从这段代码片段中不知道的是:

  • 你在听活动吗?(这非常重要,因为这是您将如何知道第二方接受/拒绝了消息邀请以及其他诸如谁在打字和消息之类的事情)。我建议研究GettingStarted-Events并设置一种机制来请求事件。
  • 您是否在 reportMyActivity 上频繁(约 3-5 分钟)发出 POST 请求,以确保应用程序不会被回收。如果没有,请查看Resources-reportMyActivity

如果代码正在侦听事件并报告活动。下一步将侦听messagingInvitation并检查对话/消息事件。对话将从 Connecting ( state ) (messageInvitation 正在处理) 转变为 Connected (messagingInvitation 被接受) 或 Disconnected (messagingInvitation 被拒绝, 对话结束, 其他错误)。假设另一个用户接受下一个要检查的事件是 Connected 的消息状态(这意味着消息模式在对话中处于活动状态,并且有用的方法如sendMessageaddParticipantsetIsTyping将可用)或断开连接(这意味着消息传递模式未激活,addMessaging可用于启用此模式。

如果您可以达到这一点,则当任何参与者向对话发送消息时,将出现消息事件。方向属性可用于确定当前 UCWA 用户何时发送消息(传出),并且对于所有其他用户,应该有一个可以识别用户的参与者属性。

于 2013-10-23T12:45:50.240 回答