Этот документ содержит справочную информацию для всех функций, доступных вам через HTTP-интерфейс для отправки СМС.
HTTP API позволяет вам интегрировать ваше приложение (клиента) для text.gr (шлюз) с использованием протокола HTTP для отправки СМС.
Клиент выдает запрос HTTP GET для text.gr и HTTP-интерфейса, передавая ему список необходимых параметров. text.gr отправляет назад ответ HTTP, который показывает успешность проведения операции.
Обратите внимание на то, что часто в возвращенных данных используется разделитель '|' – символ вертикальной черты (ASCII 124).
Все параметры должны быть в кодировке URL и UTF-8, как описано в следующих примерах кода.
API отвечает на все команды согласно типу
параметра. Допустимые значения типа
параметра включают: v2
- значение по умолчанию, json
и xml
.
Пример ответа для команды API key/get
:
URL: https://text.gr/api/key/get?username=[username]&password=[password]&type=...
...&type=v2
Ответы:
6fe2dd9c06df83
...&type=json
Ответы:
{
"status" : "1",
"key" : "6fe2dd9c06df83",
"remarks" : "Success"
}
...&type=xml
Ответы:
<response>
<status>1</status>
<key>6fe2dd9c06ff83</key>
<remarks>Success</remarks>
</response>
key/get
)https://text.gr/api/key/get?username=
&password=
&type=
Команды API, доступные в этой версии text.gr, следуют ниже.
Ключ API следует использовать вместо имени пользователя и пароля для команд API. Вы все равно можете использовать имя пользователя и пароль, но мы настоятельно рекомендуем использовать вместо них ключ API, по причинам безопасности.
Вы можете получить ключ API, использовав команду key/get
. Вы сможете использовать его для всех команд API вместо имени пользователя и пароля. Если вам потребуется изменить ключ API, то вы можете сделать это с использованием команды key/reset
.
Команды key/get
и key/reset
- единственные команды, требующие использования имени пользователя и пароля.
Как только вы получите ключ API, то сможете использовать его для всех команд API.
key/get
)https://text.gr/api/key/get?username=
&password=
&type=
key/reset
)https://text.gr/api/key/reset?username=
&password=
&type=
...&type=v2
Ответы:
6fe2dd9c06df83
...&type=json
Ответы:
{
"status" : "1",
"key" : "6fe2dd9c06df83",
"remarks" : "Success"
}
...&type=xml
Ответы:
<response>
<status>1</status>
<key>6fe2dd9c06ff83</key>
<remarks>Success</remarks>
</response>
URL: https://text.gr/api/sms/send?key=[API Key]
Параметр | Описание | Наличие |
---|---|---|
text |
Сообщение готово к отправке. Сообщение должно быть в кодировке URL | Поле обязательно для заполнения |
to |
MSIDSN получателя, которому будет отправлено сообщение. Напр.: 49175123456 | Поле обязательно для заполнения |
from |
Идентификационный номер отправителя (при буквенно-цифровом обозначении макс. 11 символов, цифры – макс. 16 символов) | Необязательно |
flash |
Установить верно для отправки Flash СМС | Необязательно |
ucs |
Установить верно для отправки СМС с использованием кодировки UCS | Необязательно |
timestamp |
Установить временную метку для отправки СМС согласно Unix Epoch | Необязательно |
type |
Тип ответа API может быть v2 , json или xml |
Необязательно |
...&type=v2
Ответы:
1234567890
...&type=json
Ответы:
{
"status" : "1",
"id" : "1234567890",
"balance" : "1234",
"remarks" : "Success"
}
...&type=xml
Ответы:
<response>
<status>1</status>
<id>1234567890</id>
<balance>1234</balance>
<remarks>Success</remarks>
</response>
Описание | |
---|---|
статус |
1 для отправленного сообщения, в противном случае отправка сообщения не удалась |
идентификационный номер |
идентификационный номер сообщения (или 0 в случае ошибки). Отчеты о доставке предоставляются на основании идентификационных номеров сообщений |
баланс |
баланс аккаунта |
примечания |
Примечания о команде |
sms/send
)https://text.gr/api/sms/send?key=
&to=
&from=
&text=Hello&type=
<?php // Simple SMS send function function sendSMS($key, $to, $message, $originator) { $URL = "https://text.gr/api/sms/send?key=" . $key . "&to=" . $to; $URL .= "&text=" . urlencode( $message ) . '&from=' . urlencode( $originator ); $fp = fopen( $URL, 'r' ); return fread( $fp, 1024 ); } // Example of use $response = sendSMS( 'My API Key', '4917512345', 'My test message', 'MyMessage' ); echo $response; ?>
<?php // Simple SMS send function function sendSMS($key, $to, $message, $originator) { $URL = "https://text.gr/api/sms/send?key=" . $key . "&to=" . $to; $URL .= "&text=".urlencode($message).'&from='.urlencode($originator); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $URL); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $output = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); return $output; } // Example of use $response = sendSMS('My API Key', '4917512345', 'My test message', 'MyMessage'); echo $response ; ?>
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; // Uses Apache Common URL utils, download from apache.org and put it in CLASSPATH import org.apache.commons.codec.binary.Base64; // Simple send SMS programm public class SendSMS { public static String sendSMS( String key, String to, String message, String originator ) { String webPage; try { webPage = "https://text.gr/api/sms/send?key=" + key + "&to=" + to + "&text=" + URLEncoder.encode( message, "UTF-8" ) + "&from=" + URLEncoder.encode( originator, "UTF-8" ); } catch ( UnsupportedEncodingException e ) { return "UnsupportedEncodingException"; } try{ URL url = new URL(webPage); URLConnection urlConnection = url.openConnection(); InputStream is = urlConnection.getInputStream(); InputStreamReader isr = new InputStreamReader(is); int numCharsRead; char[] charArray = new char[1024]; StringBuffer sb = new StringBuffer(); while ((numCharsRead = isr.read(charArray)) > 0) { sb.append(charArray, 0, numCharsRead); } String result = sb.toString(); return result; } catch ( Exception e ){ return "MalformedURLException"; } } public static void main( String[] args ){ // Example of use String response = sendSMS( "My API Key", "4917512345", "My test message", "MyMessage" ); System.out.println( response ); } }
<% mykey = "My API Key" 'put your API Key here mobile = "4917512345" message = Server.URLEncode("My test message") originator = Server.URLEncode("TextMessage") url = "https://text.gr/api/sms/send?key=" + mykey + "&to=" + mobile + "&text=" + message + "&from=" + originator set objSrvHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP") objSrvHTTP.open "GET", url, False objSrvHTTP.send() Resp = objSrvHTTP.responseText Response.Write( Resp ) %>
using System; using System.IO; using System.Net; using System.Text; using System.Web; namespace SendSMS { class Program { public static string SendSMS( string key, string to, string message, string originator ) { StringBuilder sb = new StringBuilder(); byte[] buf = new byte[ 1024 ]; string url = "https://text.gr/api/sms/send?key=" + key + "&to=" + to + "&text=" + HttpUtility.UrlEncode( message ) + "&from=" + HttpUtility.UrlEncode( originator ); HttpWebRequest request = ( HttpWebRequest ) WebRequest.Create( url ); HttpWebResponse response = ( HttpWebResponse ) request.GetResponse(); Stream resStream = response.GetResponseStream(); string tempString = null; int count = 0; do { count = resStream.Read( buf, 0, buf.Length ); if ( count != 0 ) { tempString = Encoding.ASCII.GetString( buf, 0, count ); sb.Append( tempString ); } } while ( count > 0 ); return sb.ToString(); } static void Main( string[] args ) { string respXML = SendSMS( "My API Key", "4917512345", "My test message", "MyMessage" ); Console.WriteLine( respXML ); } } }
/* * Send SMS C/C++ example need curllib download from http://curl.haxx.se/ */ #include <stdio.h> #include <tchar.h> #include <string.h> #include <curl/curl.h> #define URLSIZE 512 struct MemoryStruct { char *memory; size_t size; }; /* Converts a hex character to its integer value */ char from_hex(char ch) { return isdigit(ch) ? ch - '0' : tolower(ch) - 'a' + 10; } /* Converts an integer value to its hex character*/ char to_hex(char code) { static char hex[] = "0123456789abcdef"; return hex[code & 15]; } /* Returns a url-encoded version of str */ char *url_encode(char *str) { char *pstr = str, *buf = (char *)malloc(strlen(str) * 3 + 1), *pbuf = buf; while (*pstr) { if (isalnum(*pstr) || *pstr == '-' || *pstr == '_' || *pstr == '.' || *pstr == '~') *pbuf++ = *pstr; else if (*pstr == ' ') *pbuf++ = '+'; else *pbuf++ = '%', *pbuf++ = to_hex(*pstr >> 4), *pbuf++ = to_hex(*pstr & 15); pstr++; } *pbuf = '\0'; return buf; } /* CURL Callback write function */ static size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) { size_t realsize = size * nmemb; struct MemoryStruct *mem = (struct MemoryStruct *)userp; mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1); if (mem->memory == NULL) { /* out of memory! */ printf("not enough memory (realloc returned NULL)\n"); exit(EXIT_FAILURE); } memcpy(&(mem->memory[mem->size]), contents, realsize); mem->size += realsize; mem->memory[mem->size] = 0; return realsize; } /* Send SMS */ char * sendSMS(const char *key, const char *to, char *message, char *originator) { static char url[URLSIZE] = "https://text.gr/api/sms/send?key="; char *encoded; CURL *curl; CURLcode res; struct MemoryStruct chunk; chunk.memory = (char *)malloc(1); /* will be grown as needed by the realloc above */ chunk.size = 0; /* no data at this point */ curl = curl_easy_init(); if(curl) { strcat_s(url, URLSIZE, key); strcat_s(url, URLSIZE, "&to="); strcat_s(url, URLSIZE, to); strcat_s(url, URLSIZE, "&text="); encoded = url_encode(message); strcat_s(url, URLSIZE, encoded); free(encoded); encoded = url_encode(originator); strcat_s(url, URLSIZE, "&from="); strcat_s(url, URLSIZE, encoded); free(encoded); curl_easy_setopt(curl, CURLOPT_URL, url); /* send all data to this function */ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); /* we pass our 'chunk' struct to the callback function */ curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk); if((res = curl_easy_perform(curl)) != CURLE_OK) { return NULL; } curl_easy_cleanup(curl); } return chunk.memory; } int main(void) { char *response; response = sendSMS("My API Key", "4917512345", "My test message", "MyMessage"); if(response != NULL) { printf(response); free(response); } getchar(); return 0; }
#include <iostream> #include <string> #using <System.Dll> #using <System.Web.Dll> using namespace std; using namespace System; using namespace System::Web; using namespace System::Net; using namespace System::IO; using namespace System::Runtime::InteropServices; ref class SMSSender { private: static String^ Key = "My API Key"; public: SMSSender() {} String^ SendSMS(String^ To, String^ Message, String^ From) { Message = HttpUtility::UrlEncode(Message); From = HttpUtility::UrlEncode(From); String^ URL = "https://text.gr/api/sms/send?key=" + Key + "&text=" + Message + "&from=" + From + "&to=" + To; WebRequest^ Handle = WebRequest::Create(URL); WebResponse^ HTTPResponse = Handle->GetResponse(); StreamReader^ Stream = gcnew StreamReader(HTTPResponse->GetResponseStream()); String^ Response = Stream->ReadToEnd()->Trim(); HTTPResponse->Close(); return Response; } }; int main() { SMSSender^ test = gcnew SMSSender(); String^ resp = test->SendSMS("4917512345", "My test message", "MyMessage"); Console::WriteLine(resp); return 0; }
require 'net/http' require 'uri' def send_sms( key, to, message, originator ) requested_url = 'https://text.gr/api/sms/send?key=' + key + "&to=" + to + "&text=" + URI.escape( message ) + "&from=" + URI.escape( originator ) url = URI.parse( requested_url ) full_path = ( url.query.blank? ) ? url.path : "#{url.path}?#{url.query}" the_request = Net::HTTP::Get.new( full_path ) the_response = Net::HTTP.start( url.host, url.port ) { |http| http.request( the_request ) } raise "Response was not 200, response was #{the_response.code}" if the_response.code != "200" return the_response.bodyend resp = send_sms( 'My API Key', '4917512345', 'My test message', 'MyMessage' ) puts(resp)
Imports System.Web Module Module1 Public Function SendSMS( ByVal key As String, ByVal toPhone As String, ByVal message As String, ByVal originator As String ) Dim request As HttpWebRequest Dim response As HttpWebResponse = Nothing Dim reader As StreamReader Dim url As String = "https://text.gr/api/sms/send?key=" & key & "&to=" & toPhone & "&text=" & System.Web.HttpUtility.UrlEncode( message ) & "&from=" & System.Web.HttpUtility.urlencode( originator ) Try ' Create the web request request = DirectCast(WebRequest.Create(url), HttpWebRequest) ' Get response response = DirectCast(request.GetResponse(), HttpWebResponse) ' Get the response stream into a reader reader = New StreamReader(response.GetResponseStream()) ' Return response SendSMS = reader.ReadToEnd() Finally If Not response Is Nothing Then response.Close() Console.WriteLine("Error connecting") End If End Try End Function Sub Main() Dim result As String = SendSMS( "My API Key", "4917512345", "My test message", "MyMessage" ) Console.WriteLine( result ) Console.ReadKey() End Sub End Module
https://text.gr/api/balance/get?key=[API Key]
Количество СМС в аккаунте.
...&type=v2
Ответы:
1234
...&type=json
Ответы:
{
"status" : "1",
"balance" : "1234",
"remarks" : "Success"
}
...&type=xml
Ответы:
<response>
<status>1</status>
<balance>1234</balance>
<remarks>Success</remarks>
</response>
balance/get
)https://text.gr/api/balance/get?key=
&type=
https://text.gr/api/status/get?key=[API Key]
Трансформирует все сообщения, чей статус был изменен, и разделяет значения символом вертикальной черты|
(когда тип
параметра v2
).
Статус может быть s
(отправлено), d
(доставлено) или f
(не доставлено).
...&type=v2
Ответы:
id_1 | status_1 |
id_2 | status_2 |
...... |
id_N | status_N
...&type=json
Ответы:
{
"0" : {
"id" : "1231223122",
"status" : "d"
},
"1" : {
"id" : "1234561232",
"status" : "f"
},
"status" : "1",
"total" : "2",
"remarks" : "Success"
}
...&type=xml
Ответы:
<response>
<status>1</status>
<total>2</total>
<remarks>Success</remarks>
<sms>
<id>1231223122</id>
<status>d</status>
</sms>
<sms>
<id>1234561232</id>
<status>f</status>
</sms>
</response>
status/get
)https://text.gr/api/status/get?key=
&type=