전기를 고로 처리하다
전송이나 이벤트를 호출할 때, Vonage가 보내는 웹 훅 노드에 응답하는 서버를 만들 것입니다.그리고 우리는 음성 기능을 갖춘 Vonage 프로그램을 만들어서 전송된 음성 호출 루트를 목적지까지 전달할 것이다.
Go code snippets repository 에서 이 강좌에 표시된 코드를 찾을 수 있습니다.
선결 조건
Vonage API 계정
이 강좌를 완성하려면 Vonage API account가 필요합니다.만약 당신이 아직 없다면 sign up today 무료 신용카드로 건설을 시작할 수 있습니다.계정을 보유한 후에는 Vonage API Dashboard 상단에서 API 키와 API 기밀을 찾을 수 있습니다.
이 강좌는 가상 전화번호도 사용한다.하나를 구매하려면 숫자 > 로 이동하여 숫자를 구매한 다음 원하는 숫자를 검색하십시오.만약 네가 방금 등록했다면, 번호의 초기 비용은 네가 사용할 수 있는 신용으로 지불하기 쉬울 것이다.
코드 작성
Vonage가 가상 번호에 대한 음성 호출을 받았을 때, 웹 훅을 설정해서 음성 호출을 받았는지 확인합니다.이 설정은 이전에 만들고 설정한 프로그램에만 적용됩니다.터미널의 모든 이벤트를 출력할 수 있는 이벤트 웹훅을 설정합니다. 예를 들어 호출이 '벨' 인지 '응답' 인지.
이 두 웹훅에 대한 모든 요청을 처리하기 위해 코드를 작성합시다.
receive-an-inbound-call.go
라는 파일을 만들고 다음 내용을 이 파일로 복사합니다.package main
import (
"encoding/json"
"fmt"
"net/http"
"github.com/vonage/vonage-go-sdk/ncco"
)
func answer(w http.ResponseWriter, req *http.Request) {
paramKeys, _ := req.URL.Query()["from"]
MyNcco := ncco.Ncco{}
talk := ncco.TalkAction{Text: "Thank you for calling " + string(paramKeys[0])}
MyNcco.AddAction(talk)
data, _ := json.Marshal(MyNcco)
w.Header().Set("Content-Type", "application/json")
w.Write(data)
}
func event(w http.ResponseWriter, req *http.Request) {
paramKeys, _ := req.URL.Query()["status"]
fmt.Println("Event status: " + paramKeys[0])
}
func main() {
http.HandleFunc("/webhooks/answer", answer)
http.HandleFunc("/webhooks/event", event)
http.ListenAndServe(":8080", nil)
}
위의 코드는 세 개의 함수를 포함한다.이것은'전보를 보낸 사람에게 감사합니다'라는 문자열입니다. 이 문자열은'전보를 보낸 사람에게 감사합니다'의 첫 번째 전화번호입니다.그런 다음 이 Ncco 작업을 응답으로 반환합니다.두 번째 함수는 모든 이벤트가 업데이트되는 처리 프로그램입니다.이 강좌에서 이벤트를 터치할 때마다 코드는 터미널에서 이벤트의 상태를 출력합니다.
세 번째 함수는 "main"함수입니다. 요청과 관련된 함수를 실행하기 위해
/webhooks/answer
웹훅 URL을 만듭니다.이 코드의 마지막 부분은 감청 포트 8080을 통해 코드를 웹 서버로 바꾸는 것이다.응용 프로그램을 테스트하려면 다음 명령을 실행합니다.
go run receive-an-inbound-call.go
이제 브라우저에서 "http://localhost:8080/webhooks/answer"로 이동합니다.다음과 같이 NCCO인 JSON 배열을 받습니다.[{"action":"talk","text":"Thank you for calling 447000000","bargeIn":false,"loop":1}]
위 예제에 표시된 NCCO는 4개의 배열 필드로 구성되어 있으며 이에 대한 자세한 내용은 다음과 같습니다./webhooks/event
NCCO의 작동 유형을 결정합니다.Vonage가 대화 동작임을 나타냅니다"action":"talk"
텍스트 주체를 나타내는 Vonage가 음성 통화"text":"Thank you for calling 447000000"
Vonage 사용자가 통화 종료 전에 통화를 중단할 수 없음"bargeIn":false
Vonage가 텍스트를 한 번만 말하도록 지시인터넷에 프로젝트 공개
호출이 들어오면 Vonage는 번호로 설정된 웹훅 URL에 HTTP 요청을 보내기 때문에 이 프로그램은 인터넷에 접근할 수 있어야 하기 때문에 Ngrok을 권장합니다.
다음 명령을 사용하여 Ngrok을 시작합니다.
ngrok http 8080
ngrok에서 사용하는 https URL을 복사합니다. 나중에 필요할 것입니다.예를 들면 다음과 같습니다.https://abc1234.ngrok.io -> http://localhost:8080
Note This URL will be different every time you run the command if you're using the free plan. So you will have to update your application in the Dashboard each time you run the command.
구성 설정
Dashboard의 '당신의 프로그램' 아래에 프로그램을 만듭니다.새 프로그램의 이름을 지정하고 '공개 키와 개인 키 생성' 을 선택하면 개인 키를 다운로드합니다.키 파일을 만든 코드 옆으로 이동합니다.
응용 프로그램에 음성 기능을 추가하고 이전에 복사한 Ngrok URL을 사용하여 URL을 구성합니다.응답 URL의 경우
"loop":1
및 이벤트 URL[paste ngrok url]/webhooks/answer
사용Vonage 가상 번호를 구매하여 Vonage 프로그램을 만들고 웹 훅 이벤트를 처리하는 코드를 작성했습니다.당신의 프로젝트를 테스트할 때가 됐어요!
테스트 해볼게요.
인바운드 음성 호출을 처리하는 방법에 대해 알아보기 위해 Vonage 애플리케이션과 전화 번호를 구성했습니다.웹 훅
[paste ngrok url]/webhooks/event.
을 내부에서 작성했습니다. 모든 입국 호출 요청을 처리하는 데 사용됩니다.지금은 이 프로그램을 테스트할 때다.다음 명령을 실행하면 웹 서버를 시작하고 웹 훅을 사용하여 요청을 탐지합니다.따라서 다음 명령을 실행하여 새 애플리케이션을 테스트합니다.go run receive-an-inbound-call.go
가상 번호로 전화를 걸면 뒤에 인용된 '감사의 전화', 그리고 당신의 전화번호를 들을 수 있습니다.현재, 가상 전화번호를 빌리고, 이 새 번호에 대한 웹 훅 호출을 처리하기 위해 Vonage 프로그램을 만들었습니다.이 번호로 전화를 걸 때, 당신의 코드는 지금 통화에 음성 메시지를 추가해서 들을 수 있도록 합니다.
한층 더 읽다
Go code snippets repository 에서 이 강좌에 표시된 코드를 찾을 수 있습니다.
다음은 Go 서비스 사용과 관련된 기타 자습서입니다.
Reference
이 문제에 관하여(전기를 고로 처리하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vonagedev/handle-an-incoming-call-with-go-2509텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)