private async Task Play(HttpContext context, WebSocket webSocket) { string userName = context.Request.Query["userName"]; webSockets.Add(userName, webSocket); var buffer = new byte[1024 * 4]; WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); while (!result.CloseStatus.HasValue) { string reqString = Encoding.UTF8.GetString(buffer); MessageReq msgReq = JsonConvert.DeserializeObject <MessageReq>(reqString); if (string.IsNullOrEmpty(msgReq.To)) { await sendToEveryOneAsync(msgReq.GetBytes(), result); } else { await sendToPersonAsync(msgReq.GetBytes(), result, msgReq.To); } result = await webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); } await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None); webSockets.Remove(userName); }
/// <summary> /// 查询订单返回 /// </summary> /// <param name="orderId"></param> /// <returns></returns> public static string QueryOrder(string orderId) { string url = string.Format(domain + "/rest/v1.0/order/query/access_token/{0}/sf_appid/{1}/sf_appkey/{2}", QueryAccessToken(), SFAppId, SFAppKey); MessageReq <OrderQueryReqDto> req = new MessageReq <OrderQueryReqDto>(); req.head.transType = 203; req.head.transMessageId = DateTime.Now.ToLongTimeString(); req.body = new OrderQueryReqDto(); req.body.orderId = orderId; MessageResp <OrderQueryRespDto> res = HttpWebHelper.doPost <MessageReq <OrderQueryReqDto>, MessageResp <OrderQueryRespDto> >(url, req); //return HttpWebHelper.ObjectToJson(res); if (res.head.code == "EX_CODE_OPENAPI_0105") { GetAccessToken(); QueryOrder(orderId); } if (res.head.transType == 4203) { return(res.body.mailNo); } else { throw new Exception(res.head.message); } }
/// <summary> /// Message the specified workspaceId, input and callback. /// </summary> /// <param name="workspaceId">Workspace identifier.</param> /// <param name="input">Input.</param> /// <param name="callback">Callback.</param> public bool Message(string workspaceId, string input, OnMessage callback) { if (string.IsNullOrEmpty(workspaceId)) { throw new ArgumentNullException("workspaceId"); } if (string.IsNullOrEmpty(input)) { throw new ArgumentNullException("input"); } if (callback == null) { throw new ArgumentNullException("callback"); } RESTConnector connector = RESTConnector.GetConnector(SERVICE_ID, "/v2/rest/workspaces"); if (connector == null) { return(false); } string reqJson = "{{\"input\": {{\"text\": \"{0}\"}}}}"; string reqString = string.Format(reqJson, input); MessageReq req = new MessageReq(); req.Callback = callback; req.Headers["Content-Type"] = "application/json"; req.Function = "/" + workspaceId + "/message"; req.Send = Encoding.UTF8.GetBytes(reqString); req.OnResponse = MessageResp; return(connector.Send(req)); }
public async Task Create_Chat_Room_For_Talk() { // Arrange var actualUserRegistered = await UserRegisterAsync(new UserReq { Name = "Test", Surname = "Test", EmailAddress = "*****@*****.**", Username = "******", Password = "******" }); await AuthenticateAsync(actualUserRegistered.AccessToken); var actual = await TestClient.GetAsync("api/start-chat"); var response = await actual.Content.ReadAsAsync <ResultExtended <string> >(); // // Act var messageReq = new MessageReq { Username = "******", Text = "Hello Jack!", }; var expected = await TestClient.PostAsJsonAsync($"api/{response.Data}/send-message", messageReq); // // Assert expected.StatusCode.Should().Be(HttpStatusCode.OK); var result = await expected.Content.ReadAsAsync <ResultExtended <MessageRes> >(); result.Data.ReceiverUsername.Should().Be(messageReq.Username); result.Data.Text.Should().Be(messageReq.Text); }
} //获取流水号 流水号格式 20171130+10位(时间戳) private void testwaybill(String id) { string url = "https://open-sbox.sf-express.com/rest/v1.0/waybill/image/access_token/" + accesstoken + "/sf_appid/00037521/sf_appkey/21662E074E84B37EB4DBA0F89F9803AA"; MessageReq <WaybillReqDto> req = new MessageReq <WaybillReqDto>(); HeadMessageReq req2 = new HeadMessageReq { transType = 0xcd, transMessageId = GettransMessageId() }; req.head = req2; WaybillReqDto dto = new WaybillReqDto { orderId = id }; req.body = dto; MessageResp <WaybillRespDto> resp = WaybillDownloadTools.waybillDownload(url, req); //resp.body.images{string[]}; string newLine = "打印信息:" + resp.head.message + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); if (resp.head.code.Equals("EX_CODE_OPENAPI_0200")) { String[] a = resp.body.images; Base64ToImg(a[0]); } }
public bool UserExist(MessageReq mr) { foreach (CommonUsers us in _commonList) { if (us.Login == mr.Recipient) { return(true); } } return(false); }
// string pathToArchivize = "Archiwum_Wiadomości.xml"; public void Save(MessageReq msg, string pathToArchivize) { if (File.Exists(pathToArchivize)) { AddNewElementToXmlFile(msg, pathToArchivize); } else { CreateArchivizeXmlFile(msg, pathToArchivize); } }
public async Task <IActionResult> SendMessage(string chatId, MessageReq request) { var response = await _messageService.SendMessage(_currentUser.UserId, chatId, request.Username, request.Text); if (!response.Succeeded) { return(BadRequest(response)); } return(Ok(response)); }
public IActionResult AddShortMessage([FromBody] MessageReq messageReq) { try { var reply = Client.AddShortMessage(messageReq); return(Json(new JsonResultModel(ReturnCode.Success, "Send short message successful."))); } catch (RpcException ex) { return(Json(new JsonResultModel(ReturnCode.SubmitError, ex.Status.Detail))); } }
private void RouteQuery() { string url = "https://open-sbox.sf-express.com/rest/v1.0/route/query/access_token/" + accesstoken + "/sf_appid/00037521/sf_appkey/21662E074E84B37EB4DBA0F89F9803AA"; MessageReq <RouteReqDto> req = new MessageReq <RouteReqDto>(); HeadMessageReq req2 = new HeadMessageReq { transType = 0x1f5, transMessageId = GettransMessageId() }; req.head = req2; RouteReqDto dto = new RouteReqDto { methodType = 2, trackingType = 1, trackingNumber = textBox2.Text.ToString() }; req.body = dto; MessageResp <List <RouteRespDto> > resp = RouteTools.routeQuery(url, req); string newLine = "订单追踪message:" + resp.head.message + "\n"; //richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); if (resp.head.code.Equals("EX_CODE_OPENAPI_0200")) { for (int i = 0; i < resp.body.Count; i++) { newLine = "{\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = " 快递接收地址:" + resp.body[i].acceptAddress + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = " 快递接收时间:" + resp.body[i].acceptTime + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = " 客户订单号:" + resp.body[i].orderId + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = " 快递运单号:" + resp.body[i].mailNo + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = " 操作码:" + resp.body[i].opcode + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = " 备注:" + resp.body[i].remark + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = "}\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); } } else { newLine = "订单追踪message:" + resp.head.message + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); } }
public bool Message(OnMessage callback, string workspaceID, string input, bool useAlternateIntents, string conversationID = default(string), string customData = default(string)) { if (string.IsNullOrEmpty(workspaceID)) { throw new ArgumentNullException("workspaceId"); } if (string.IsNullOrEmpty(input)) { throw new ArgumentNullException("input"); } if (callback == null) { throw new ArgumentNullException("callback"); } MessageRequest messageRequest = new MessageRequest(); messageRequest.inputText = input; messageRequest.alternate_intents = useAlternateIntents; if (conversationID != default(string)) { messageRequest.conversationID = conversationID; } RESTConnector connector = RESTConnector.GetConnector(SERVICE_ID, SERVICE_MESSAGE); if (connector == null) { return(false); } fsData data; sm_Serializer.TrySerialize(messageRequest.GetType(), messageRequest, out data).AssertSuccessWithoutWarnings(); string reqString = fsJsonPrinter.CompressedJson(data); MessageReq req = new MessageReq(); req.Callback = callback; req.MessageRequest = messageRequest; req.Headers["Content-Type"] = "application/json"; req.Headers["Accept"] = "application/json"; req.Parameters["version"] = Version.VERSION; req.Function = "/" + workspaceID + "/message"; req.Data = customData; req.Send = Encoding.UTF8.GetBytes(reqString); req.OnResponse = MessageResp; return(connector.Send(req)); }
} //获取流水号 流水号格式 20171130+10位(时间戳) public void OrderQuery(String OrderId_check) { string url = "https://open-sbox.sf-express.com/rest/v1.0/order/query/access_token/" + accesstoken + "/sf_appid/00037521/sf_appkey/21662E074E84B37EB4DBA0F89F9803AA"; MessageReq <OrderQueryReqDto> req = new MessageReq <OrderQueryReqDto>(); HeadMessageReq req2 = new HeadMessageReq { transType = 0xcb, transMessageId = GettransMessageId() }; req.head = req2; OrderQueryReqDto dto = new OrderQueryReqDto { orderId = OrderId_check }; req.body = dto; MessageResp <OrderQueryRespDto> resp = OrderTools.orderQuery(url, req); string newLine = "message:" + resp.head.message + "\n"; //richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); /* newLine = "transMessageId(流水号):" + resp.head.transMessageId + "\n"; * richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); * newLine = "transType(处理类型):" + resp.head.transType + "\n"; * richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); * newLine = "code(状态码):" + resp.head.code + "\n"; * richTextBox1.Text = richTextBox1.Text.Insert(0, newLine);*/ if (resp.head.code.Equals("EX_CODE_OPENAPI_0200")) { newLine = "resp.body.destcode(目的地代码):" + resp.body.destCode + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = "resp.body.originCode(原寄地代码):" + resp.body.originCode + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = "resp.body.orderId(订单号):" + resp.body.orderId + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = "resp.body.maiNo(顺丰运单号):" + resp.body.mailNo + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = "resp.body.remark(留言):" + resp.body.remark + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); newLine = null; textBox2.Text = resp.body.mailNo; } else { newLine = "查询失败,错误信息:" + resp.head.message + "\n"; richTextBox1.Text = richTextBox1.Text.Insert(0, newLine); } }
/// <summary> /// Message the specified workspaceId, input and callback. /// </summary> /// <param name="successCallback">The success callback.</param> /// <param name="failCallback">The fail callback.</param> /// <param name="workspaceID">Workspace identifier.</param> /// <param name="input">Input.</param> /// <param name="customData">Custom data.</param> public bool Message(SuccessCallback <object> successCallback, FailCallback failCallback, string workspaceID, string input, Dictionary <string, object> customData = null) { //if (string.IsNullOrEmpty(workspaceID)) // throw new ArgumentNullException("workspaceId"); if (successCallback == null) { throw new ArgumentNullException("successCallback"); } if (failCallback == null) { throw new ArgumentNullException("failCallback"); } RESTConnector connector = RESTConnector.GetConnector(Credentials, Workspaces); if (connector == null) { return(false); } string reqJson = "{{\"input\": {{\"text\": \"{0}\"}}}}"; string reqString = string.Format(reqJson, input); MessageReq req = new MessageReq(); req.SuccessCallback = successCallback; req.FailCallback = failCallback; req.HttpMethod = UnityWebRequest.kHttpVerbPOST; req.Headers["Content-Type"] = "application/json"; req.Headers["Accept"] = "application/json"; req.Parameters["version"] = VersionDate; req.Function = "/" + workspaceID + "/message"; req.Send = Encoding.UTF8.GetBytes(reqString); req.OnResponse = MessageResp; req.Headers["X-IBMCloud-SDK-Analytics"] = "service_name=conversation;service_version=v1;operation_id=Message"; req.DisableSslVerification = DisableSslVerification; req.CustomData = customData == null ? new Dictionary <string, object>() : customData; if (req.CustomData.ContainsKey(Constants.String.CUSTOM_REQUEST_HEADERS)) { foreach (KeyValuePair <string, string> kvp in req.CustomData[Constants.String.CUSTOM_REQUEST_HEADERS] as Dictionary <string, string> ) { req.Headers.Add(kvp.Key, kvp.Value); } } return(connector.Send(req)); }
//沙盒环境{domain} :open-sbox.sf-express.com //生产环境{domain} :open-prod.sf-express.com /// <summary> /// 获取Token 有效期为1小时 /// </summary> /// <returns></returns> private static string GetAccessToken() { string url = string.Format(domain + "/public/v1.0/security/access_token/sf_appid/{0}/sf_appkey/{1}", SFAppId, SFAppKey); MessageReq <TokenEntity> accessTokenReq = new MessageReq <TokenEntity>(); accessTokenReq.head.transType = 301; accessTokenReq.head.transMessageId = DateTime.Now.ToLongTimeString(); MessageResp <TokenEntity> res = HttpWebHelper.doPost <MessageReq <TokenEntity>, MessageResp <TokenEntity> >(url, accessTokenReq); if (res.head.transType == 4301) { return(res.body.accessToken); } else { throw new Exception(res.head.message); } }
private void CreateArchivizeXmlFile(MessageReq msg, string pathToArchivize) { try { var newMessage = new XElement("Messages", new XElement("Message", new XAttribute("Recipient", msg.Recipient), new XAttribute("Sender", msg.Login), new XAttribute("Date", DateTime.Now), new XElement("Body", msg.Message))); newMessage.Save(pathToArchivize); } catch (Exception) { Console.WriteLine("Błąd w tworzeniu pliku archiwizacji wiadomości"); } }
public string VerifySign(Test pars) { string res = ""; var keyDic = GetKeyDics(); #region 判断请求是否过期---假设过期时间是20秒 DateTime requestTime = new DateTime(pars._timestamp); if (requestTime.AddSeconds(20) < DateTime.Now) { MessageReq message = new MessageReq(); message.code = -1; message.msg = "接口过期"; res = JsonConvert.SerializeObject(message); } #endregion #region 根据appkey获取key值 string secret = keyDic.Where(T => T.Key == pars.appKey).FirstOrDefault().Value; #endregion #region 校验签名是否合法 var param = new SortedDictionary <string, string>(new AsciiComparer()); param.Add("age", pars.age.ToString()); param.Add("appKey", pars.appKey); param.Add("appSecret", secret);//把secret加入进行加密 param.Add("_timestamp", pars._timestamp.ToString()); string currentSign = GetSign(param, pars.appKey); if (pars._sign != currentSign) { MessageReq message = new MessageReq(); message.code = -2; message.msg = "签名不合法"; res = JsonConvert.SerializeObject(message); } #endregion return(res); }
public static string QueryRoute(string trackingNumber) { string url = string.Format(domain + "/rest/v1.0/route/query/access_token/{0}/sf_appid/{1}/sf_appkey/{2}", QueryAccessToken(), SFAppId, SFAppKey); MessageReq <RouteReqDto> req = new MessageReq <RouteReqDto>(); req.head.transType = 501; req.head.transMessageId = DateTime.Now.ToLongTimeString(); req.body = new RouteReqDto(); req.body.trackingNumber = trackingNumber; req.body.trackingType = 2;//2 订单号查询 1 运单号查询 req.body.methodType = 1; MessageResp <List <RouteRespDto> > res = HttpWebHelper.doPost <MessageReq <RouteReqDto>, MessageResp <List <RouteRespDto> > >(url, req); if (res.head.code == "EX_CODE_OPENAPI_0105") { GetAccessToken(); QueryRoute(trackingNumber); } return(HttpWebHelper.ObjectToJson(res)); }
public void SendMessage(string recipient, string message, byte[] imageData) { var messageReq = new MessageReq { Login = Login, Message = message, Recipient = recipient }; if (imageData != null) { messageReq.Attachment = new Attachment { Data = imageData }; } _queueClientService.SendData(_configurationService.MainQueueName, RouteKey, _configurationService.ExchangeName, messageReq); }
public static string SubmitOrder(string province, string city, string address, string contact, string tel, string goodsName, short payMethod) { string url = string.Format(domain + "/rest/v1.0/order/access_token/{0}/sf_appid/{1}/sf_appkey/{2}", QueryAccessToken(), SFAppId, SFAppKey); MessageReq <OrderReqEntity> req = new MessageReq <OrderReqEntity>(); req.head.transType = 200; req.head.transMessageId = DateTime.Now.ToLongTimeString(); req.body = new OrderReqEntity(); req.body.orderId = "SF" + DateTime.Now.ToString("yyyyMMddHHmmssfff"); req.body.expressType = 1; //标准快递 req.body.isDoCall = 1; //通知收派员上门取件 req.body.payMethod = payMethod; //付款方式 1月结 2收方付 3第三方付 if (req.body.payMethod == 1) { req.body.custId = SFYuJieCode;//顺丰月结卡号 10 位数字 } req.body.consigneeInfo = new DeliverConsigneeInfoDto(); req.body.consigneeInfo.address = address; req.body.consigneeInfo.city = city; req.body.consigneeInfo.company = "顺丰"; req.body.consigneeInfo.contact = contact; req.body.consigneeInfo.tel = tel; req.body.consigneeInfo.province = province; req.body.cargoInfo = new CargoInfoDto(); req.body.cargoInfo.cargo = goodsName; MessageResp <OrderRespEntity> res = HttpWebHelper.doPost <MessageReq <OrderReqEntity>, MessageResp <OrderRespEntity> >(url, req); if (res.head.code == "EX_CODE_OPENAPI_0105") { GetAccessToken(); SubmitOrder(province, city, address, contact, tel, goodsName, payMethod); } if (res.head.transType == 4200) { return(res.body.orderId); } else { throw new Exception(res.head.message); } }
static void Main(string[] args) { var at = new Attachment(); at.MimeType = "jakibubuus"; byte[] scores = { 0111 }; at.Data = scores; at.Name = "nafewfzwa"; var mr = new MessageReq(); mr.Attachment = at; mr.Message = "Wiadomoewfweść"; mr.Recipient = "lfewffewfuj"; mr.Login = "******"; var xma = new XmlMessageArchivizer(); // xma.Save(mr, @"c:\MyTest.xml"); var us = new User(); us.Login = "******"; List <MessageNotification> mn = xma.Read(us, @"c:\MyTest.xml"); foreach (var mess in mn) { Console.WriteLine(Encoding.UTF8.GetString(mess.Attachment.Data)); Console.WriteLine(mess.Message); Console.WriteLine(mess.Attachment.MimeType); Console.WriteLine(mess.Attachment.Name); Console.WriteLine(mess.SendTime.ToString()); Console.WriteLine(mess.Sender); } Console.ReadLine(); }
/// <summary> /// 查询AccessToken 可以查询到数据 但是可能过期 /// </summary> /// <returns></returns> public static string QueryAccessToken() { string url = string.Format(domain + "/public/v1.0/security/access_token/query/sf_appid/{0}/sf_appkey/{1}", SFAppId, SFAppKey); MessageReq <TokenEntity> accessTokenReq = new MessageReq <TokenEntity>(); accessTokenReq.head.transType = 300; accessTokenReq.head.transMessageId = DateTime.Now.ToLongTimeString(); MessageResp <TokenEntity> res = HttpWebHelper.doPost <MessageReq <TokenEntity>, MessageResp <TokenEntity> >(url, accessTokenReq); if (res.head.code == "EX_CODE_OPENAPI_0105")//访问令牌过期 { return(GetAccessToken()); } else if (res.head.transType == 4300) { return(res.body.accessToken); } else { throw new Exception(res.head.message); } }
/// <summary> /// Message the specified workspaceId, input and callback. /// </summary> /// <param name="workspaceID">Workspace identifier.</param> /// <param name="input">Input.</param> /// <param name="callback">Callback.</param> /// <param name="customData">Custom data.</param> public bool Message(OnMessage callback, string workspaceID, string input, string customData = default(string)) { if (string.IsNullOrEmpty(workspaceID)) { throw new ArgumentNullException("workspaceId"); } if (string.IsNullOrEmpty(input)) { throw new ArgumentNullException("input"); } if (callback == null) { throw new ArgumentNullException("callback"); } RESTConnector connector = RESTConnector.GetConnector(SERVICE_ID, SERVICE_MESSAGE); if (connector == null) { return(false); } string reqJson = "{{\"input\": {{\"text\": \"{0}\"}}}}"; string reqString = string.Format(reqJson, input); MessageReq req = new MessageReq(); req.Callback = callback; req.Headers["Content-Type"] = "application/json"; req.Headers["Accept"] = "application/json"; req.Parameters["version"] = Version.VERSION; req.Function = "/" + workspaceID + "/message"; req.Data = customData; req.Send = Encoding.UTF8.GetBytes(reqString); req.OnResponse = MessageResp; return(connector.Send(req)); }
private void AddNewElementToXmlFile(MessageReq msg, string pathToArchivize) { try { XDocument xmlFile = XDocument.Load(pathToArchivize); var newMessage = new XElement("Message", new XAttribute("Recipient", msg.Recipient), new XAttribute("Sender", msg.Login), new XAttribute("Date", DateTime.Now), new XElement("Body", msg.Message) ); xmlFile.Element("Messages").Add(newMessage); xmlFile.Save(pathToArchivize); } catch (Exception) { Console.WriteLine("Błąd w załadowaniu pliku " + pathToArchivize + " lub dodaniu kolejnej pozycji do pliku XML"); } }
/// <summary> /// Message the specified workspaceId, input and callback. /// </summary> /// <param name="successCallback">The success callback.</param> /// <param name="failCallback">The fail callback.</param> /// <param name="workspaceID">Workspace identifier.</param> /// <param name="input">Input.</param> /// <param name="customData">Custom data.</param> public bool Message(SuccessCallback <object> successCallback, FailCallback failCallback, string workspaceID, string input, Dictionary <string, object> customData = null) { //if (string.IsNullOrEmpty(workspaceID)) // throw new ArgumentNullException("workspaceId"); if (successCallback == null) { throw new ArgumentNullException("successCallback"); } if (failCallback == null) { throw new ArgumentNullException("failCallback"); } RESTConnector connector = RESTConnector.GetConnector(Credentials, Workspaces); if (connector == null) { return(false); } string reqJson = "{{\"input\": {{\"text\": \"{0}\"}}}}"; string reqString = string.Format(reqJson, input); MessageReq req = new MessageReq(); req.SuccessCallback = successCallback; req.FailCallback = failCallback; req.Headers["Content-Type"] = "application/json"; req.Headers["Accept"] = "application/json"; req.Parameters["version"] = VersionDate; req.Function = "/" + workspaceID + "/message"; req.Send = Encoding.UTF8.GetBytes(reqString); req.OnResponse = MessageResp; req.CustomData = customData == null ? new Dictionary <string, object>() : customData; return(connector.Send(req)); }
/// <summary> /// Message the specified workspaceId, input and callback. /// </summary> /// <param name="successCallback">The success callback.</param> /// <param name="failCallback">The fail callback.</param> /// <param name="workspaceID">Workspace identifier.</param> /// <param name="messageRequest">Message request object.</param> /// <param name="customData">Custom data.</param> /// <returns></returns> public bool Message(SuccessCallback <object> successCallback, FailCallback failCallback, string workspaceID, MessageRequest messageRequest, Dictionary <string, object> customData = null) { if (string.IsNullOrEmpty(workspaceID)) { throw new ArgumentNullException("workspaceId"); } if (successCallback == null) { throw new ArgumentNullException("successCallback"); } if (failCallback == null) { throw new ArgumentNullException("failCallback"); } RESTConnector connector = RESTConnector.GetConnector(Credentials, Workspaces); if (connector == null) { return(false); } IDictionary <string, string> requestDict = new Dictionary <string, string>(); if (messageRequest.context != null) { requestDict.Add("context", Json.Serialize(messageRequest.context)); } if (messageRequest.input != null) { requestDict.Add("input", Json.Serialize(messageRequest.input)); } requestDict.Add("alternate_intents", Json.Serialize(messageRequest.alternate_intents)); if (messageRequest.entities != null) { requestDict.Add("entities", Json.Serialize(messageRequest.entities)); } if (messageRequest.intents != null) { requestDict.Add("intents", Json.Serialize(messageRequest.intents)); } if (messageRequest.output != null) { requestDict.Add("output", Json.Serialize(messageRequest.output)); } int iterator = 0; StringBuilder stringBuilder = new StringBuilder("{"); foreach (KeyValuePair <string, string> property in requestDict) { string delimeter = iterator < requestDict.Count - 1 ? "," : ""; stringBuilder.Append(string.Format("\"{0}\": {1}{2}", property.Key, property.Value, delimeter)); iterator++; } stringBuilder.Append("}"); string stringToSend = stringBuilder.ToString(); MessageReq req = new MessageReq(); req.SuccessCallback = successCallback; req.FailCallback = failCallback; req.Headers["Content-Type"] = "application/json"; req.Headers["Accept"] = "application/json"; req.Parameters["version"] = VersionDate; req.Function = "/" + workspaceID + "/message"; req.Send = Encoding.UTF8.GetBytes(stringToSend); req.OnResponse = MessageResp; req.CustomData = customData == null ? new Dictionary <string, object>() : customData; if (req.CustomData.ContainsKey(Constants.String.CUSTOM_REQUEST_HEADERS)) { foreach (KeyValuePair <string, string> kvp in req.CustomData[Constants.String.CUSTOM_REQUEST_HEADERS] as Dictionary <string, string> ) { req.Headers.Add(kvp.Key, kvp.Value); } } return(connector.Send(req)); }
/// <summary> /// Message the specified workspaceId, input and callback. /// </summary> /// <param name="callback">Callback.</param> /// <param name="workspaceID">Workspace identifier.</param> /// <param name="messageRequest">Message request object.</param> /// <param name="customData">Custom data.</param> /// <returns></returns> public bool Message(OnMessage callback, string workspaceID, MessageRequest messageRequest, string customData = default(string)) { if (string.IsNullOrEmpty(workspaceID)) { throw new ArgumentNullException("workspaceId"); } if (string.IsNullOrEmpty(messageRequest.input["text"] as string)) { throw new ArgumentNullException("messageRequest.input.text"); } if (callback == null) { throw new ArgumentNullException("callback"); } RESTConnector connector = RESTConnector.GetConnector(Credentials, Workspaces); if (connector == null) { return(false); } IDictionary <string, string> requestDict = new Dictionary <string, string>(); if (messageRequest.context != null) { requestDict.Add("context", Json.Serialize(messageRequest.context)); } if (messageRequest.input != null) { requestDict.Add("input", Json.Serialize(messageRequest.input)); } requestDict.Add("alternate_intents", Json.Serialize(messageRequest.alternate_intents)); if (messageRequest.entities != null) { requestDict.Add("entities", Json.Serialize(messageRequest.entities)); } if (messageRequest.intents != null) { requestDict.Add("intents", Json.Serialize(messageRequest.intents)); } if (messageRequest.output != null) { requestDict.Add("output", Json.Serialize(messageRequest.output)); } int iterator = 0; StringBuilder stringBuilder = new StringBuilder("{"); foreach (KeyValuePair <string, string> property in requestDict) { string delimeter = iterator < requestDict.Count - 1 ? "," : ""; stringBuilder.Append(string.Format("\"{0}\": {1}{2}", property.Key, property.Value, delimeter)); iterator++; } stringBuilder.Append("}"); string stringToSend = stringBuilder.ToString(); MessageReq req = new MessageReq(); req.Callback = callback; req.MessageRequest = messageRequest; req.Headers["Content-Type"] = "application/json"; req.Headers["Accept"] = "application/json"; req.Parameters["version"] = VersionDate; req.Function = "/" + workspaceID + "/message"; req.Data = customData; req.Send = Encoding.UTF8.GetBytes(stringToSend); req.OnResponse = MessageResp; return(connector.Send(req)); }