void server_evClientSubmitMulti(object sender, SmppServerClient client, SubmitMulti data) { _log.Info("Client {0} sends message From:{1} to multiple destinations:{2}, Text: {3}", client.RemoteEndPoint, data.SourceAddress, data.DestinationAddresses.Count, data.GetMessageText(client.EncodingMapper)); _messageComposer.AddMessage(data); if (data.RegisteredDelivery == 1) { SmeAddress destinationAddress = data.DestinationAddresses[0] as SmeAddress; string messageText = data.GetMessageText(client.EncodingMapper); //Send Delivery Receipt when required Task.Run(() => client.Deliver( SMS.ForDeliver() .From(data.SourceAddress) .To(destinationAddress) .Coding(data.DataCoding) .Receipt(new Receipt { DoneDate = DateTime.Now, State = MessageState.Delivered, MessageId = data.Response.MessageId, ErrorCode = "0", SubmitDate = DateTime.Now, Text = messageText.Substring(0, Math.Max(20, messageText.Length)) } ) )); } }
private async void bSubmit_Click(object sender, EventArgs e) { if (_client != null) { SmeAddress source = new SmeAddress(tbSrcAdr.Text, (AddressTON)byte.Parse(tbSrcAdrTON.Text), (AddressNPI)byte.Parse(tbSrcAdrNPI.Text)); SmeAddress destination = new SmeAddress(tbDestAdr.Text, (AddressTON)byte.Parse(tbDestAdrTON.Text), (AddressNPI)byte.Parse(tbDestAdrNPI.Text)); await _client.Deliver(SMS.ForDeliver() .From(source) .To(destination) .Coding(GetDataCoding()) .Text(tbSend.Text) ); DialogResult = DialogResult.OK; } }
private async Task SubmitBatchMessages() { var sourceAddress = new SmeAddress(tbSrcAdr.Text, (AddressTON)byte.Parse(tbSrcAdrTON.Text), (AddressNPI)byte.Parse(tbSrcAdrNPI.Text)); var destinationAddress = new SmeAddress(tbDestAdr.Text, (AddressTON)byte.Parse(tbDestAdrTON.Text), (AddressNPI)byte.Parse(tbDestAdrNPI.Text)); string messageText = tbMessageText.Text; SubmitMode mode = GetSubmitMode(); DataCodings coding = GetDataCoding(); int count = int.Parse(tbRepeatTimes.Text); _log.Info("Submit message batch. Count: {0}. Text: {1}", count, messageText); // bulk sms test List <SubmitSm> batch = new List <SubmitSm>(); for (int i = 0; i < count; i++) { ISubmitSmBuilder builder = SMS.ForSubmit() .Text(messageText) .From(sourceAddress) .To(destinationAddress) .Coding(coding); switch (mode) { case SubmitMode.Payload: builder.MessageInPayload(); break; case SubmitMode.ShortMessageWithSAR: builder.ConcatenationInSAR(); break; } batch.AddRange(builder.Create(_client)); } try { Stopwatch watch = Stopwatch.StartNew(); var resp = (await _client.Submit(batch)).ToArray(); watch.Stop(); if (resp.All(x => x.Header.Status == CommandStatus.ESME_ROK)) { _log.Info("Batch sending completed. Submitted: {0}, Elapsed: {1} ms, Performance: {2} m/s", batch.Count, watch.ElapsedMilliseconds, batch.Count * 1000f / watch.ElapsedMilliseconds); } else { var wrongStatuses = resp.Where(x => x.Header.Status != CommandStatus.ESME_ROK) .Select(x => x.Header.Status).Distinct(); _log.Warn("Submit failed. Wrong Status: {0}", string.Join(", ", wrongStatuses)); } } catch (Exception ex) { _log.Error("Submit failed. Error: {0}", ex.Message); } }
private async Task SubmitSingleMessage() { DataCodings coding = GetDataCoding(); var sourceAddress = new SmeAddress(tbSrcAdr.Text, (AddressTON)byte.Parse(tbSrcAdrTON.Text), (AddressNPI)byte.Parse(tbSrcAdrNPI.Text)); var destinationAddress = new SmeAddress(tbDestAdr.Text, (AddressTON)byte.Parse(tbDestAdrTON.Text), (AddressNPI)byte.Parse(tbDestAdrNPI.Text)); _log.Info("Submit message To: {0}. Text: {1}", tbDestAdr.Text, tbMessageText.Text); ISubmitSmBuilder builder = SMS.ForSubmit() .From(sourceAddress) .To(destinationAddress) .Coding(coding) .Text(tbMessageText.Text) //Or you can set data //.Data(HexStringToByteArray("024A3A6949A59194813D988151A004004D215D2690568698A22820C49A4106288A126A8A22C2A820C22820C2A82342AC30820C4984106288A12628A22C2A420800")) //Apply italic style for all text (mobile device should support basic EMS) //.Set(delegate(SubmitSm sm) // { // sm.UserDataPdu.Headers.Add( // InformationElementIdentifiers.TextFormatting, new byte[] {0, 1, ToByte("00100011")}); // }) // Set ValidityPeriod expired in 2 days .ExpireIn(TimeSpan.FromDays(2)) //Request delivery receipt .DeliveryReceipt(); //Add custom TLV parameter //.AddParameter(0x1403, "free") //Change SubmitSm sequence to your own number. //.Set(delegate(SubmitSm sm) { sm.Sequence = _client.SequenceGenerator.NextSequenceNumber();}) SubmitMode mode = GetSubmitMode(); switch (mode) { case SubmitMode.Payload: builder.MessageInPayload(); break; case SubmitMode.ShortMessageWithSAR: builder.ConcatenationInSAR(); break; } try { IList <SubmitSmResp> resp = await _client.Submit(builder); if (resp.All(x => x.Header.Status == CommandStatus.ESME_ROK)) { _log.Info("Submit succeeded. MessageIds: {0}", string.Join(",", resp.Select(x => x.MessageId))); } else { _log.Warn("Submit failed. Status: {0}", string.Join(",", resp.Select(x => x.Header.Status.ToString()))); } } catch (Exception ex) { _log.Error("Submit failed. Error: {0}", ex.Message); } // When you received success result, you can later query message status on SMSC // if (resp.Count > 0 && resp[0].Status == CommandStatus.ESME_ROK) // { // _log.Info("QuerySm for message " + resp[0].MessageId); // QuerySmResp qresp = _client.Query(resp[0].MessageId, // srcTon, srcNpi,srcAdr); // } }