submit_sm_multipart_fallback/
submit_sm_multipart_fallback.rs1use std::str::FromStr;
8
9use rusmpp_core::{
10 pdus::owned::SubmitSm,
11 types::owned::COctetString,
12 values::{Npi, Ton},
13};
14use rusmpp_extra::{
15 concatenation::owned::SubmitSmMultipartExt,
16 encoding::{
17 gsm7bit::{Gsm7BitAlphabet, Gsm7BitUnpacked},
18 ucs2::Ucs2,
19 },
20};
21
22fn main() -> Result<(), Box<dyn core::error::Error>> {
23 let multipart = SubmitSm::builder()
24 .source_addr_ton(Ton::Unknown)
25 .source_addr_npi(Npi::Unknown)
26 .source_addr(COctetString::from_str("12345")?)
27 .destination_addr(COctetString::from_str("491701234567")?)
28 .build()
29 .multipart("Hi This message can not be encoded in gsm 7-bit default alphabet so it will fallback to ucs2: 你好")
30 .encoder(Gsm7BitUnpacked::new().with_alphabet(Gsm7BitAlphabet::default()))
31 .fallback(Ucs2::new())
32 .build()?;
33
34 let total = multipart.len();
35
36 println!("Submitting multipart message: total {total}");
37
38 for (i, sm) in multipart.into_iter().enumerate() {
39 assert_eq!(sm.data_coding, Ucs2::new().data_coding());
40
41 println!(
42 "Submitting part {}: short_message_len = {}, esm_class = {:?}, data_coding = {:?}, short_message = {:?}",
43 i + 1,
44 sm.short_message().len(),
45 sm.esm_class,
46 sm.data_coding,
47 sm.short_message()
48 );
49 println!()
50 }
51
52 Ok(())
53}