首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用UCWA聊天

使用UCWA聊天
EN

Stack Overflow用户
提问于 2013-10-22 08:02:55
回答 1查看 1.7K关注 0票数 1

我正在尝试用UCWA(Lync应用)实现双向聊天,我可以将数据发送给客户端,但是如何从该客户端接收数据呢?来实现一个正确的双向聊天?

我附加了代码发送一些ping给特定的用户,如何从用户那里接收数据来实现聊天呢?

代码语言:javascript
复制
       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);

            }



             }
    }
EN

回答 1

Stack Overflow用户

发布于 2013-10-23 12:45:50

此时您要做的是与用户开始对话,并提供一条与messagingInvitation一起使用的初始消息。从这个代码切片中我不知道的是:

  • 你在听什么吗?(这是非常重要的,因为这样您就可以知道第二方接受/拒绝了messagingInvitation,以及其他事情,比如谁在打字和留言)。我建议查看开始-事件并建立一个机制来请求事件。
  • 您是否在reportMyActivity上频繁(~3~5分钟)发布请求,以确保应用程序不被回收。如果没有,请查看资源-报告-活动

如果代码正在侦听事件和报告活动。下一步是侦听messagingInvitation并检查对话/信息传递事件。会话将从连接(状态) (messageInvitation正在处理)过渡到连接(messagingInvitation被接受)或断开(messagingInvitation被拒绝,会话结束,其他错误)。假设另一个用户接受要检查的下一个事件是已连接的消息状态(这意味着消息传递模式在会话中处于活动状态,有用的方法(如sendMessageaddParticipantsetIsTyping将可用)或断开连接(这意味着消息传递模式不活动,可以使用addMessaging来启用此模式)。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19512289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档