Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

Twilioを使ってJavaで電話を受けて音声を流そうとしたけど切れてしまう

最近Twilioで遊んでいます。先日、Javaで電話をかけることができました。
kikutaro777.hatenablog.com

今度は電話をうけて、音声を流してみようと思い、以下のQuickstartをやってみました。
jp.twilio.com

受信の仕組みは簡単で次のとおりです。
・Twilioの電話番号に電話をする
・あらかじめTwilioで設定したURLにWebhookで通知する
・Webhookを受けて処理を返す

Webhookの受信サーバとして、ドキュメントではJavaのWebフレームワークであるSparkを使っていましたが、自分はSpring Boot(2.1.3)でやりました。コードはいたってシンプルで次のとおりです。GETメソッドのhelloは確認用で、POSTメソッドが電話の受信処理です。

package tech.kikutaro.twiliowebhook;

import com.twilio.twiml.VoiceResponse;
import com.twilio.twiml.voice.Say;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

@RestController
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

	@GetMapping("/hello")
	public String getMethodName() {
		return "hello";
	}

	@PostMapping("/")
	public String callPhone() {
		Say say  = new Say.Builder("hello").build();
		VoiceResponse voiceResponse = new VoiceResponse.Builder()
				.say(say)
				.build();
		System.out.println(voiceResponse.toXml());
		return voiceResponse.toXml();
	}
}

ローカル環境で起動したサーバをインターネット上に公開するため、ngrokを利用します。

ngrok.exe http 8080

ForwardingのURLが生成されたので、コピーします。
f:id:kikutaro777:20190219225304p:plain

Twilioの「通話着信時」の部分へ設定します。
f:id:kikutaro777:20190219224806p:plain

これで準備が整ったので、自分のスマホからTwilioの電話番号に電話をかけました。すると、電話の応答とともにWebhookでPOSTメソッドが呼び出され、コンソールにも応答で返す以下の内容が表示されました。

<?xml version="1.0" encoding="UTF-8"?><Response><Say>hello</Say></Response>

で、電話から「hello」と流れてくるのを期待していたのですが、なぜかすぐに切れてしまいます。なぜ…?

応答コードなどに問題があるのかと思って、以下の通話ログを確認してみました。

f:id:kikutaro777:20190219225717p:plain

f:id:kikutaro777:20190219225754p:plain

応答は200で、Bodyにしっかりリクエストは入っていて、問題ないようにみえる。。。
f:id:kikutaro777:20190219225837p:plain

とりあえずWebhookで受信はできたけど、音声は流れず残念な結果でした。ググってみたけど意外と情報がなかったので、もうちょっと調べる必要がありそうです。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村