以下を行うことは可能ですか?やってみたけど失敗した!
Twilio を使用して一部の Java コードから呼び出しを開始し、TwiML を使用しています。次に、SMS の送信、電話の発信、別のサーブレットへのリダイレクトなどの別のアクションを開始したいと思います。これらのいずれも機能させることができません。ユーザーが私の Twilo 番号に電話をかけているのではなく、Twilio が通話を開始しているためではないかと考えていました。うまくいけば、私はただ愚かです!これが私がurlファイルで試したことです(実際の番号はxxxxに置き換えられました
と SMS を送信しようとしています*
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/voicemail_record.xml -->
<Response>
<Say>
Hi John, Are you alright?
If you would like me to get a carer, please wait.
Or if you are alright, just hang up.
<Pause length="6"/>
</Say>
<Sms from="+1747999xxxx" to="+6422671xxxx">The king stay the king.</Sms>
<Say>
Okay, I have asked your carer to contact you
</Say>
</Response>
* *または番号をダイヤルしようとしています
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/voicemail_record.xml -->
<Response>
<Dial>
<Number>64 7 856 xxxx</Number>
</Dial>
<Say>Goodbye</Say>
</Response>
またはリダイレクトしようとしています
<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/voicemail_record.xml -->
<Response>
<Gather method="POST" numDigits="5" action="https://myappengineapp.appspot.com/secure/twilio">
<Say>Please confirm your SMS subscriptiong by pressing 1.</Say>
</Gather>
</Response>
ここに Java コードがあります - Google App Engine では動作しないため、Twilio ヘルパー API ライブラリは使用していません* ** * *
package testing;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
import nz.co.assistedfreedom.cron.GAEJCronServlet;
import org.apache.commons.codec.binary.Base64;
public class TestTwilioCall {
/**
* @param args
*/
public static void main(String[] args) {
Map<String, String> vars = new HashMap<String, String>();
x
vars.put("To", "+647856xxxx");
vars.put("From", "+1747999xxxx");
vars.put("Url", "http://www.xxx.com/assistedliving/redirect1");
"https://myappengineapp.appspot.com/secure/twilio");
String accountSid = "*********secret*********";
String authToken = "*********secret*********";
makeCall(vars, accountSid, authToken);
}
public static void makeCall(Map<String,String> vars, String accountSid, String authToken){
try {
String encoded = "";
if(vars!=null){
for(String key: vars.keySet()){
try {
encoded += "&"+key+"="+ URLEncoder.encode(vars.get(key),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
encoded =encoded.substring(1);
}
URL url = new URL("https://api.twilio.com/2010-04-01/Accounts/" + accountSid + "/Calls");
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
String userpass = accountSid+":"+authToken;
String encodeuserpass = new String(Base64.encodeBase64(userpass.getBytes()));
httpURLConnection.setRequestProperty ("Authorization", "Basic " + encodeuserpass);
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("POST");
OutputStreamWriter out = new OutputStreamWriter(httpURLConnection.getOutputStream());
out.write(encoded);
out.close();
BufferedReader in = null;
try {
if(httpURLConnection.getInputStream()!=null){
in = new BufferedReader(
new InputStreamReader(
httpURLConnection.getInputStream()));
}
} catch(IOException e){
e.printStackTrace();
if(httpURLConnection.getErrorStream()!=null){
in = new BufferedReader(
new InputStreamReader(
httpURLConnection.getErrorStream()));
}
}
if(in==null) {
System.out.println("Unable to read response from server");
}
StringBuffer decodedString = new StringBuffer();
String line;
while ((line = in.readLine()) != null) {
decodedString.append(line);
}
in.close();
// get result code
int responseCode = httpURLConnection.getResponseCode();
System.out.println("response code is " + responseCode);
} catch (Exception e) {
final Logger log2 = Logger.getLogger(GAEJCronServlet.class.getName());
// log2.log(Level.SEVERE, e.getMessage());
e.printStackTrace();
}
}
}