protected internal virtual void SendTextMessage(Contact remoteContact, TextMessage textMessage) { textMessage.PrepareMessage(); string to = ((int)remoteContact.ClientType).ToString() + ":" + remoteContact.Account; string from = ((int)Owner.ClientType).ToString() + ":" + Owner.Account; MultiMimeMessage mmMessage = new MultiMimeMessage(to, from); mmMessage.RoutingHeaders[MIMERoutingHeaders.From][MIMERoutingHeaders.EPID] = NSMessageHandler.MachineGuid.ToString("B").ToLowerInvariant(); if (remoteContact.ClientType == IMAddressInfoType.Circle) { mmMessage.RoutingHeaders[MIMERoutingHeaders.To][MIMERoutingHeaders.Path] = "IM"; } else if (remoteContact.Online) { mmMessage.RoutingHeaders[MIMERoutingHeaders.ServiceChannel] = "IM/Online"; } else { mmMessage.RoutingHeaders[MIMERoutingHeaders.ServiceChannel] = "IM/Offline"; } if (remoteContact.Via != null) { mmMessage.RoutingHeaders[MIMERoutingHeaders.To]["via"] = ((int)remoteContact.Via.ClientType).ToString() + ":" + remoteContact.Via.Account; } mmMessage.ContentKeyVersion = "2.0"; mmMessage.ContentHeaders[MIMEContentHeaders.MessageType] = MessageTypes.Text; mmMessage.ContentHeaders[MIMEHeaderStrings.X_MMS_IM_Format] = textMessage.GetStyleString(); mmMessage.InnerBody = Encoding.UTF8.GetBytes(textMessage.Text); NSMessage sdgPayload = new NSMessage("SDG"); sdgPayload.InnerMessage = mmMessage; MessageProcessor.SendMessage(sdgPayload); }
/// <summary> /// Sends a mobile message to the specified remote contact. This only works when /// the remote contact has it's mobile device enabled and has MSN-direct enabled. /// </summary> /// <param name="receiver"></param> /// <param name="text"></param> protected internal virtual void SendMobileMessage(Contact receiver, string text) { TextMessage txtMsg = new TextMessage(text); string to = ((int)receiver.ClientType).ToString() + ":" + ((receiver.ClientType == IMAddressInfoType.Telephone) ? "tel:" + receiver.Account : receiver.Account); string from = ((int)Owner.ClientType).ToString() + ":" + Owner.Account; MultiMimeMessage mmMessage = new MultiMimeMessage(to, from); mmMessage.RoutingHeaders[MIMERoutingHeaders.From][MIMERoutingHeaders.EPID] = MachineGuid.ToString("B").ToLowerInvariant(); mmMessage.RoutingHeaders[MIMERoutingHeaders.ServiceChannel] = "IM/Mobile"; mmMessage.ContentKeyVersion = "2.0"; mmMessage.ContentHeaders[MIMEContentHeaders.MessageType] = MessageTypes.Text; mmMessage.ContentHeaders[MIMEContentHeaders.MSIMFormat] = txtMsg.GetStyleString(); mmMessage.InnerBody = Encoding.UTF8.GetBytes(txtMsg.Text); NSMessage sdgPayload = new NSMessage("SDG"); sdgPayload.InnerMessage = mmMessage; MessageProcessor.SendMessage(sdgPayload); }