|
| 1 | +//! 음성 메시지 단건 전송 예제 |
| 2 | +//! |
| 3 | +//! 실행 방법: |
| 4 | +//! ```bash |
| 5 | +//! cargo run --example message_send_voice |
| 6 | +//! ``` |
| 7 | +//! |
| 8 | +//! 환경 변수 설정: |
| 9 | +//! ```bash |
| 10 | +//! export SOLAPI_API_KEY="your_api_key" |
| 11 | +//! export SOLAPI_API_SECRET="your_api_secret" |
| 12 | +//! export FROM_PHONE="01012345678" |
| 13 | +//! export TO_PHONE="01087654321" |
| 14 | +//! ``` |
| 15 | +//! 음성 메시지와 관련된 설명은 https://developers.solapi.com/references/voice 를 참고 해 주세요! |
| 16 | +
|
| 17 | +use solapi_rust::SolapiClient; |
| 18 | + |
| 19 | +fn main() { |
| 20 | + // 환경 변수에서 API 키 및 전화번호 가져오기 |
| 21 | + let api_key = |
| 22 | + std::env::var("SOLAPI_API_KEY").expect("환경 변수 SOLAPI_API_KEY가 설정되지 않았습니다"); |
| 23 | + let api_secret = std::env::var("SOLAPI_API_SECRET") |
| 24 | + .expect("환경 변수 SOLAPI_API_SECRET가 설정되지 않았습니다"); |
| 25 | + let from_phone = |
| 26 | + std::env::var("FROM_PHONE").expect("환경 변수 FROM_PHONE이 설정되지 않았습니다"); |
| 27 | + let to_phone = std::env::var("TO_PHONE").expect("환경 변수 TO_PHONE이 설정되지 않았습니다"); |
| 28 | + |
| 29 | + // SOLAPI 클라이언트 생성 |
| 30 | + let client = SolapiClient::new(api_key, api_secret); |
| 31 | + let message_service = client.message_service(); |
| 32 | + |
| 33 | + // SMS 전송 요청 생성 (빌더 패턴 사용) |
| 34 | + let message = solapi_rust::message::Message::new(&to_phone) |
| 35 | + .from(&from_phone) |
| 36 | + .text("안녕하세요! SOLAPI Rust SDK 테스트 메시지입니다.") |
| 37 | + .message_type(solapi_rust::message::MessageType::Voice) |
| 38 | + .voice_options( |
| 39 | + solapi_rust::message::VoiceOption::new() |
| 40 | + .voice_type(solapi_rust::message::VoiceType::Female), // 첫 안내 메시지 설정 |
| 41 | + // .header_message("안녕하세요") |
| 42 | + // 마지막 안내 메시지 설정 |
| 43 | + // .tail_message("감사합니다") |
| 44 | + // 응답 범위 설정 1~9까지 설정 가능, 값 설정시 해당 값을 설정한 범위까지 만큼 수신자가 키패드로 입력할 수 있습니다. 예) 5로 설정한 경우 1~5까지 수신자가 입력가능 |
| 45 | + // .reply_range(5) |
| 46 | + // 상담원 번호 설정, reply_range와 counselor_number는 동시에 설정될 수 없습니다. |
| 47 | + //.counselor_number("01012345678"), |
| 48 | + ); |
| 49 | + |
| 50 | + let request = solapi_rust::message::SendRequest { |
| 51 | + messages: vec![message], |
| 52 | + allow_duplicates: None, |
| 53 | + scheduled_date: None, |
| 54 | + show_message_list: None, |
| 55 | + }; |
| 56 | + |
| 57 | + // 메시지 전송 |
| 58 | + println!("메시지를 전송합니다..."); |
| 59 | + println!("발신번호: {}", from_phone); |
| 60 | + println!("수신번호: {}", to_phone); |
| 61 | + |
| 62 | + match message_service.send_blocking(request) { |
| 63 | + Ok(response) => { |
| 64 | + println!("\n✓ 메시지 전송 성공!"); |
| 65 | + println!("그룹 ID: {}", response.group_info.group_id); |
| 66 | + println!("상태: {}", response.group_info.status); |
| 67 | + println!("총 메시지 수: {}", response.group_info.count.total); |
| 68 | + println!("성공: {}", response.group_info.count.registered_success); |
| 69 | + println!("실패: {}", response.group_info.count.registered_failed); |
| 70 | + |
| 71 | + if !response.failed_message_list.is_empty() { |
| 72 | + println!("\n⚠ 실패한 메시지:"); |
| 73 | + for failed in response.failed_message_list { |
| 74 | + println!(" - {}: {}", failed.to, failed.status_message); |
| 75 | + } |
| 76 | + } |
| 77 | + } |
| 78 | + Err(e) => { |
| 79 | + eprintln!("\n✗ 메시지 전송 실패!"); |
| 80 | + eprintln!("오류: {:?}", e); |
| 81 | + } |
| 82 | + } |
| 83 | +} |
0 commit comments