트윌리오는 모든 것을 전화로 바꿔주는 웹 서비스입니다. 클라우드 호스팅된 텔레포니 REST API죠. 여기선 누군가 아두이노에 할당된 전화번호로 전화를 걸면 트윌리오가 아두이노에 voice.xml 파일을 요청합니다. 응답 내용은 트윌리오의 TTS(텍스트 음성 변환) 엔진 '앨리스'가 발신자에게 읽어줍니다.
Yaler.net은 방화벽, NAT, 모바일 네트워크 라우터 뒤에 있는 임베디드 디바이스에 웹 접근을 가능하게 합니다. 여기선 트윌리오가 로컬 네트워크에 있는 아두이노의 voice.xml에 접근할 수 있게 해줍니다(공인 IP가 없으므로). (공개: 저는 Yaler의 창업자 중 한 명입니다.)
이 데모에선 온도 센서를 사용하지만 다른 센서도 상관없습니다. 실제 제품 예시론 카나리(현 버디) 연기 감지기가 있어, 집주인이 전화로 배터리 상태를 확인할 수 있습니다.
더 추상적으로 보면, 이 인스트럭터블은 개방형 IoT에서 모듈형 클라우드 서비스를 자유롭게 조합해 새롭고 단순하며 신뢰할 수 있는 솔루션을 구축하는 방법을 보여줍니다. HTTP와 웹훅 만세! 시작해볼까요...
포트 포워딩으로 로컬 방화벽에 HTTP 요청용 구멍을 뚫을 줄 안다면 로컬 서버 써도 됩니다. 중요한 건 트윌리오가 클라우드에서 아두이노에 접근 가능해야 한다는 점입니다.
저장 후 업로드
모든 변경사항 저장하고 아두이노에 업로드하세요. USB 케이블을 개발용 컴퓨터에 연결한 채로 시리얼 콘솔을 열어 디버깅 출력을 확인하세요.
4단계: 아두이노 접속하기
브라우저에서 아두이노 접속
Yaler 라이브러리로 아두이노(와 XML 문서)가 퍼블릭 인터넷에서 접근 가능해집니다: https://RELAY_DOMAIN.try.yaler.net/ (예: gsiot-ffmq-ttd5면 https://gsiot-ffmq-ttd5.try.yaler.net/). 트윌리오용으로 더 깔끔하게: https://gsiot-ffmq-ttd5.try.yaler.net/voice.xml
XML 문서 확인
XML 문서 내용이 트윌리오의 착신 응답을 결정합니다. TTS 음성도 선택 가능(여기선 앨리스). 트윌리오 XML 포맷은 TwiML이라 부릅니다. 상세 문서. 응답 텍스트에 실제 온도값이 포함됩니다. 센서를 데워보고 브라우저에서 F5로 새로고침하면 값이 변하는 걸 볼 수 있습니다.
착신용 번호 필요(소액 비용 발생). 로그인 후 Numbers → Twilio Numbers → Manage Numbers 탭으로 이동. Buy a number 클릭, Voice 체크박스 선택 후 Search, 원하는 번호 선택해 Buy.
voice.xml 웹훅 URL 구성
Manage Numbers 탭에서 방금 산 번호 클릭. Response URL을 https://RELAY_DOMAIN.try.yaler.net/voice.xml로 설정하고 POST 방식 선택. 예: gsiot-ffmq-ttd5면 https://gsiot-ffmq-ttd5.try.yaler.net/voice.xml