Description
Issue Summary
I'm using UnityWebRequest with C# to send messages through Twilio, but keep getting the error "A 'to' phone number is required." I've tested my Twilio number and personal number using Twilios website API so I know the problem isn't with either of them. I assume I should be able to use any phone number, but to be safe I even verified my number as a 'Caller ID' within Twilio. I've encountered errors related to my account SID and Auth, and resolved them so I know they aren't the problem. I recently created my Twilio account and don't have strong experience with it so let me know if I need to make some configurations in the console or if something in my code is causing the recipient phone number to be misread or not sent correctly.
Code Snippet
I call the method in my scene controller file with
StartCoroutine(twilioSMS.SendMessage("+1xxxxxxxxxx", "This is a test message"));
Then in my Twilio file, which I've attached to the scene in Unity:
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
using Newtonsoft.Json;
public IEnumerator SendMessage(string recipientPhoneNumber, string message)
{
// Create the JSON payload for the request
Debug.Log("The recipient phone number is: " + recipientPhoneNumber);
string jsonPayload = JsonConvert.SerializeObject(new
{
from = twilioPhoneNumber,
to = recipientPhoneNumber,
body = message
});
// Create the UnityWebRequest object
UnityWebRequest request = UnityWebRequest.Post(twilioMessagesApiUrlFormatted,
jsonPayload);
// Set the authorization header with your Account SID and Auth Token
string auth = accountSid + ":" + authToken;
string base64Auth =
System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(auth));
string authorizationHeader = "Basic " + base64Auth;
request.SetRequestHeader("Authorization", authorizationHeader);
request.SetRequestHeader("Content-Type", "application/json");
// Send the HTTP request
request.uploadHandler = new
UploadHandlerRaw(System.Text.Encoding.UTF8.GetBytes(jsonPayload));
request.downloadHandler = new DownloadHandlerBuffer();
yield return request.SendWebRequest();
}
Using the above method and any phone number I try as recipientPhoneNumber in the '+1xxxxxxxxxx' format returns the error:
Exception/Log
Twilio API Request Payload: {"from":"+1xxxxxxxxxx","to":"+1xxxxxxxxxx","body":"This is a test message"}
Twilio API Response Text: {"code": 21604, "message": "A 'To' phone number is required.", "more_info": "https://www.twilio.com/docs/errors/21604", "status": 400}
Twilio API request error: HTTP/1.1 400 Bad Request
Twilio API Request Method: POST
Technical details:
- twilio-csharp version: Latest - not using a package
- csharp version: - latest - using through Unity & VSCode which is also the most recent version