Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用UCWA聊天_C#_Asp.net_Lync_Ucwa - Fatal编程技术网

C# 使用UCWA聊天

C# 使用UCWA聊天,c#,asp.net,lync,ucwa,C#,Asp.net,Lync,Ucwa,我正在尝试使用UCWA(Lync web app)实现双向聊天,我能够将数据发送到客户端,但如何从该客户端接收数据?实现正确的双向聊天 我已经附加了代码向特定用户发送一些ping,如何从用户那里接收数据以实现聊天 private void StarConversation(string startConversationLink, string hostName, string accessToken, string tokenType) { var myO

我正在尝试使用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);

            }



             }
    }
private void StarConversation(字符串startConversationLink、字符串主机名、字符串访问令牌、字符串令牌类型)
{
var myObject=new JObject();
添加(“operationId”,Guid.NewGuid().ToString().Replace(“-”,”);
myObject.Add(“to”,“sip:xyz@abcd.com");
myObject.Add(“主题”、“测试conv”);
列表传出=新列表();
列表传入=新列表();
列表超时=新建列表();
JObject href=new JObject();
string sending=“嘿,你好吗?”;
href.Add(“href”,“数据:text/plain;base64,”+Convert.ToBase64String(System.text.Encoding.UTF8.GetBytes(sending));
JObject message=new JObject();
message.Add(“message”,href);
添加(“\u链接”,消息);
HttpClient=新的HttpClient();
client.DefaultRequestHeaders.Add(“授权”,令牌类型+“”+accessToken);
PostAsync(新Uri(主机名+startConversationLink)、新StringContent(JsonConvert.SerializeObject(myObject)、Encoding.UTF8,“应用程序/json”)).Result;
if(响应。IsSuccessStatusCode)
{
Uri temp=新Uri(主机名+m_事件链接);
HttpResponseMessageResponse2=Get(客户端,temp.ToString());
string nextLink=string.Empty;
字符串timeo;
string ss=string.Empty;
int i=0;
if(响应2.IsSuccessStatusCode)
{
字符串retData2=response2.Content.ReadAsStringAsync().Result;
var o=JObject.Parse(retData2);
nextLink=o[“_links”][“next”][“href”].Value();
response=client.PostAsync(新Uri(主机名+startConversationLink)、新StringContent(JsonConvert.SerializeObject(myObject)、Encoding.UTF8,“应用程序/json”)).Result;
temp=新Uri(主机名+m_事件链接);
response2=Get(客户端,temp.ToString());
retData2=response2.Content.ReadAsStringAsync().Result;
o=JObject.Parse(retData2);
}
}
}

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

  • 你在听活动吗?(这一点非常重要,因为这是您如何知道第二方接受/拒绝了信息邀请以及其他事项,如谁在打字和发送信息)。我建议研究并建立一个机制来请求活动
  • 您是否经常(约3-5分钟)对reportMyActivity发出POST请求,以确保应用程序不会被回收。如果没有,请检查
如果代码正在侦听事件和报告活动。下一步将侦听和检查/事件。对话将从连接(状态)(正在处理消息邀请)转换为已连接(已接受MessaginInvitation)或已断开连接(MessaginInvitation已拒绝、对话已结束、其他错误)。假设另一个用户接受下一个要检查的事件是消息状态是否已连接(这意味着消息传递模式在对话中处于活动状态,以及有用的方法,如,将可用)或断开(这意味着消息传递模式未处于活动状态,可用于启用此模式)

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