📄 smsmanager.cs
字号:
namespace Imps.Client.Core
{
using Imps.Base.Sipc;
using Imps.Client.Base;
using Imps.Client.Core.History;
using Imps.Client.Utils;
using Imps.Common;
using System;
using System.Collections.Generic;
public class SMSManager
{
public static void AsyncSendSMS(User Owner, string uri, string content, AsyncBizOperation op)
{
<>c__DisplayClass3 class2;
SipRequest req = Owner.CreateSipRequest("M", Owner.SipConnection.NextCallId(), 1);
req.Message.AddHeader(new SipcToHeader(uri));
IicUri uri2 = new IicUri(uri);
if (Owner.Configuration.UserSetting.LongSmsSetting == LongSMSSetting.Enable)
{
if (uri2.Type != IicUriType.PersonalGroup)
{
req.Message.AddHeader(new SipcEventHeader("SendCatSMS"));
}
else
{
req.Message.AddHeader(new SipcEventHeader("PGSendCatSMS"));
}
}
else if (uri2.Type != IicUriType.PersonalGroup)
{
req.Message.AddHeader(new SipcEventHeader("SendSMS"));
}
else
{
req.Message.AddHeader(new SipcEventHeader("PGSendSMS"));
}
req.Message.Body = content;
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(class2, (IntPtr) this.<AsyncSendSMS>b__0);
req.SendMessageFailed += new EventHandler<FailedEventArgs>(class2, (IntPtr) this.<AsyncSendSMS>b__1);
req.WaitResponseTimeout += delegate {
op.FireImpsErrorInUiThread(null);
};
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
Owner.SendSipMessage(req);
}
private static void SaveSMSMessage(User Owner, string uri, string content, SipResponse response)
{
try
{
if (Owner.Configuration.UserSetting.ConversationSetting.SaveMessages)
{
DateTime now = DateTime.Now;
string id = null;
try
{
if (response.Message.DateHeader != null)
{
DateTime.TryParse(response.Message.DateHeader.Value, ref now);
}
}
catch
{
}
if (response.Message.MessageIDHeader != null)
{
id = response.Message.MessageIDHeader.Value;
}
IicUri uri2 = new IicUri(uri);
string friendlyName = string.Empty;
PlayerType contact = PlayerType.Contact;
if (uri == Owner.Uri.Raw)
{
friendlyName = Owner.Nickname;
}
else if (uri2.Type != IicUriType.PersonalGroup)
{
Contact contact = Owner.ContactList.FindContact(uri);
if (contact != null)
{
friendlyName = contact.DisplayName;
}
}
else
{
contact = PlayerType.Group;
PersonalGroup group = Owner.PersonalGroups[uri];
if (group != null)
{
friendlyName = group.GroupInfo.Name.Value;
}
}
if (!string.IsNullOrEmpty(friendlyName))
{
IHistoryManager historyManager = Owner.HistoryManager;
Player sender = new Player(Owner.Uri.Raw, Owner.Nickname, PlayerType.User);
List<Player> list = new List<Player>();
list.Add(new Player(uri, friendlyName, contact));
IMessage msg = new InstantMessage(id, sender, content, list.ToArray());
msg.Type = Imps.Client.Core.MessageType.ForceSMS;
msg.Time = now;
historyManager.SaveMessage(msg);
}
}
}
catch (Exception exception)
{
ClientLogger.WriteException(exception);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -