Это смешно, но я просто хочу, чтобы опубликовать один и тот же вопрос о plivo. Я также пытаюсь заставить twilio и plivo работать. Мне все-таки удалось заставить twilio работать.С другой стороны, Plivo не будет работать с одним и тем же кодом, хотя оба они практически одинаковы.
Я использовал функции REST в delphi. Следующий код используется как для twilio, так и для plivo.
procedure TForm1.FormCreate(Sender: TObject);
begin
// TypeCo
// = T = Twilio
// = P = Plivo
TypeCo := 'T';
if TypeCo='T' then // Twillio
begin
AccountSid := 'ACd27xxxxxxxxxxxxxxxxxxxxxxb106e38'; // x's were replaced to hide ID
AuthToken := '24fxxxxxxxxxxxxxxxxxxxxxxxxf08ed'; // x's were replaced to hide Token
BaseURL := 'https://api.twilio.com';
Resource := '/2010-04-01/Accounts/'+accountSid+'/Messages';
end
else if TypeCO='P' then // Plivo
begin
AccountSid := 'MANTxxxxxxxxxxxxxXYM';
AuthToken := 'ZDg0OxxxxxxxxxxxxxxxxxxxxxxxxxxxxjM5Njhh';
BaseURL := 'https://api.plivo.com';
Resource := '/v1/Account/'+accountSid+'/Message/';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RESTClient := TRESTClient.Create(BaseURL);
try
RESTRequest := TRESTRequest.Create(RESTClient);
try
RESTResponse := TRESTResponse.Create(RESTClient);
try
HTTPBasicAuthenticator := THTTPBasicAuthenticator.Create('AC', 'c1234');
try
RESTRequest.ResetToDefaults;
RESTClient.BaseURL := BaseURL;
RESTRequest.Resource := Resource;
HTTPBasicAuthenticator.UserName := AccountSid;
HTTPBasicAuthenticator.Password := AuthToken;
RESTClient.Authenticator := HTTPBasicAuthenticator;
RESTRequest.Client := RESTClient;
RESTRequest.Response := RESTResponse;
// Tried this to fix plivo error with no luck!
// RESTClient.Params.AddHeader('Content-Type', 'application/json');
// "From" number is the send # setup in the twilio or plivo account. The "To" number is a verified number in your twilio or plivo account
if TypeCo='T' then // Twilio
SendSMS('+1602xxxxx55','+1602xxxxxx7', 'This is a test text from Twilio') // x's were replaced to hide telephone numbers
else if TypeCo='P' then // Plivo
SendSMS('1602xxxxx66','1602xxxxxx7', 'This is a test text from Plivo'); // x's were replaced to hide telephone numbers
finally
HTTPBasicAuthenticator.Free;
end;
finally
RESTResponse.Free;
end;
finally
RESTRequest.Free;
end;
finally
RESTClient.Free;
end;
end;
function TForm1.SendSMS(aFrom, aTo, aText: string): boolean;
begin
result := True;
RESTRequest.ResetToDefaults;
RESTClient.BaseURL := BaseURL;
RESTRequest.Resource := Resource;
if TypeCo='T' then // Twilio
begin
RESTRequest.Params.AddUrlSegment('AccountSid', accountSid);
RESTRequest.Params.AddItem('From', aFrom);
RESTRequest.Params.AddItem('To', aTo);
RESTRequest.Params.AddItem('Body', aText);
end
else if TypeCo='P' then // Plivo
begin
RESTRequest.Params.AddUrlSegment('AccountSid', accountSid);
RESTRequest.Params.AddItem('src', aFrom);
RESTRequest.Params.AddItem('dst', aTo);
RESTRequest.Params.AddItem('text', aText);
end;
RESTRequest.Method := rmPOST;
RESTRequest.Execute;
// Show Success or Error Message
ErrorMsg.Clear;
ErrorMsg.Lines.Text := RESTResponse.Content;
end;
Как уже упоминалось, приведенный выше код отлично подходит для Twilio. Однако для Plivo я получаю следующее сообщение об ошибке:
{
"api_id": "b124d512-b8b6-11e5-9861-22000ac69cc8",
"error": "use 'application/json' Content-Type and raw POST with json data"
}
Я пытался определить, как решить эту проблему. Я связался со службой поддержки Plivo и я получил следующий ответ:
The error "use 'application/json' Content-Type and raw POST with json data" is generated when the Header "Content-Type" is not set the value "application/json"
Please add the Header Content-Type under Items in the Request Tab and set the Description as application/json.
Я пытался добавить код в процедуре кнопки:
RESTClient.Params.AddHeader('Content-Type', 'application/json');
, но она по-прежнему дает ту же ошибку. Я думаю, что этот код действительно близок к работе в Plivo. Я новичок в REST-функциях, поэтому я не уверен, что еще попробовать. Я попытался присвоить «application/json» почти все, что примет его, и все равно получить ту же ошибку. Надеюсь, кто-то еще будет иметь представление о том, что сделает Plivo.
Я бы не рекомендовал использовать Plivo. Они не доставляли нам большое количество SMS, поэтому мы несколько раз обращались к их поддержке, ждали недели и ничего ... они просто берут наши деньги за невыполненные SMS и ничего не делают для решения проблемы. –