Computer/PHP

GLOBAL SMS 서비스 plivo.com

알찬돌삐 2018. 2. 2. 02:04

SMS 로 회원들에게 문자를 발송할 일이 생겼다.

회원들이 국내한정이면 상관이 없는데, 해외에 거주하는 회원들도 다수가 존재....

검색해보니 plivo.com 이 가장 마음에 들었다.


이것저것 기능이 많았다.

INBOUND SMS, 다자간 통화, 그리고 200개 나라의 SMS 전송

INBOUND SMS 는 생소했는데, 번호를 plivo 에서 구매해두면,

그 번호로 문자가 수신되면 지정해둔 콜백URL 로 데이터를 쏴준다.

가격도 비싸지 않았다. 

INBOUND 서비스를 받기 위해서는 번호를 구매해야 하는데, 미국번호의 경우 월 0.8$ 정도이고, 한국번호는 좀 비싸다. 월 8,000원 정도..

OUTBOUND 는 번호를 굳이 구매하지 않아도, 보낼수 있는데, 그렇게 보내면 006으로 시작하는 번호로 문자가 온다.

그리고, 사용자 휴대폰에는 [국외문자] 라고 표시된다.

한국으로 문자 발송은 0.0.35$

미국으로 문자 발송은 꽤 쌌다.


plivo.com 회원가입 화면


회원가입할때 휴대폰번호를 넣게 되어있는데,

저기서 입력한 번호로 인증코드가 날아오고, 해당 폰 번호는 sandbox number 가 된다.

회원가입하자마자 임시로 쓸수 있는 약간의 크레디트 (3$ 인지 5$ 인지 기억이 나질 않음) 가 충전되어있고, sandbox number 로 문자를 테스트할수 있다.

sandbox number 는 추가할수있다.


API 예제소스도 JAVA, RUBY, C, PERL, PHP 등을 지원해준다.

PHP 는 SDK 를 다운받아서 쓰려면 composer 를 지원하는 버전이어야 한다.

물론, 다운 안 받음 -_-.

문자 보내려고 굳이 SDK 전체를 다운받아서 쓴다는게 내키지 않음 ㅎㅎㅎ.

trial 회원상태에서는 sandbox number 로만 문자를 보낼수있고, 카드번호를 넣고 25$를 충전하면 그때부터는 정상적으로 서비스를 쓸수 있는 상태가 된다.

영어가 짧아서 Account 와 Message 사이에 AUTH ID 를 넣어야 되는지 몰라서... 좀 헤맴...


문자 보낼 용도로만 간단히 함수 하나 만들어서 현재 운영중인 사이트에 붙여서 테스트해서 잘 작동해서 실서비스로 넘겼다.


API 연동은 JSON 포맷으로만 지원한다.

그리고 BASIC AUTH 을 사용한다.

아래는 소스.... (username 은 plivo.com 에서 AUTH ID 이며, password 라고 적어둔건, AUTH TOKEN 이다)



<?php
$username = 'xxxxxxxx';
$password = 'xxxxxxxx';

if (!$src) $src = '123456789';

$post = array('src'=>$src, 'dst'=>$dest, 'text'=>$msg);
$post = json_encode($post);
        
$host = "https://api.plivo.com/v1/Account/{$username}/Message/";
$process = curl_init($host);
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_HTTPHEADER, 
             array('Accept: application/json', 'Content-Type: application/json'));
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_POST, 1);
curl_setopt($process, CURLOPT_POSTFIELDS, $post);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($process);
curl_close($process);
return $return;
?>