Skip to content

Commit 93ad42c

Browse files
구조적 변경: 음성 메시지 단건 전송 예제 추가
- 음성 메시지 전송을 위한 새로운 예제 파일 `message_send_voice.rs` 추가: 환경 변수 설정 및 SOLAPI 클라이언트를 사용한 메시지 전송 로직 구현. - 예제 실행 방법 및 환경 변수 설정에 대한 주석 추가: 사용자에게 필요한 정보를 명확히 제공하여 예제 사용을 용이하게 함.
1 parent 4390294 commit 93ad42c

1 file changed

Lines changed: 83 additions & 0 deletions

File tree

examples/message_send_voice.rs

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
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

Comments
 (0)