Comment on page
WhatsApp Business API
DecisionTelecom WhatsApp API позволяет отправлять и получать деловые сообщения WhatsApp в любую страну мира и из нее через API. Каждое сообщение идентифицируется уникальным случайным идентификатором, поэтому пользователи всегда могут проверить статус сообщения, используя заданную конечную точку.
WhatsApp API использует HTTPS с ключом доступа, который используется в качестве авторизации API. Полезные данные запросов и ответов форматируются как JSON с использованием кодировки UTF-8.
API Авторизация - Базовый ключ доступа Base64.
Чтобы получить ключ API, пожалуйста, свяжитесь с вашим менеджером по работе с клиентами.
Example PHP:
$userHashKey = 'User Hash Key provided by your account manager';
$ch = curl_init('https://web.it-decision.com/v1/api/send-whatsapp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$userHashKey");
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestParams)); // $requestParams - raquest array with correct data
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$result = curl_exec($ch);
curl_close($ch);
POST:
https://web.it-decision.com/v1/api/send-whatsapp
Request POST:
{
"source_addr": "Custom Company",
"destination_addr": 8882222200,
"message_type":1,
"text":"Message content",
"file_url":"https://yourdomain.com/images/image.jpg", // file extension is a mandatory attribute
"callback_url":"https://yourdomain.com/whatsapp-callback",
"template_name":"image_tmp_en",
"template_params":"{
"to": "recipient_wa_id",
"type": "template",
"template": {
"namespace": "your-namespace",
"language": {
"policy": "deterministic",
"code": "your-language-and-locale-code"
},
"name": "your-template-name",
"components": [
{
"type" : "header",
"parameters": [
// The following parameters code example includes several different possible header types,
// not all are required for a media message template API call.
{
"type": "text",
"text": "replacement_text"
}
// OR
{
"type": "image",
"image": {
"link": "http(s)://the-url",
# provider is an optional parameter
"provider": {
"name" : "provider-name"
},
}
}
]
// end header
},
{
"type" : "body",
"parameters": [
{
"type": "text",
"text": "replacement_text"
},
{
// Any additional template parameters
}
]
// end body
},
]
}
}"
}
source_addr:
<= 20 chars - from whom the message
destination_addr:
<= 20 chars - to whom the message
message_type:
Type of message to be sent:
1 text message
2 message with media data (jpg, jpeg or png images)
4 message based on registered template
text:
<= 4096 chars - text of WhatsApp message
file_url:
Correct URL with image for media message. Correct file extensions:
jpg or jpeg (mime type is image/jpeg)
png (mime type is image/png)
callback_url:
Correct URL for message status callback
template_name:
Registered template name (only for template message)
template_params:
JSON data of all the necessary parameters to send a template message.
See details at:
https://developers.facebook.com/docs/whatsapp/api/messages/message-templates/media-message-templates
Responce JSON (POST):
{
"message_id":554
}
message_id:
Sent message ID
POST:
https://web.it-decision.com/v1/api/receive-whatsapp
Request POST:
{
"message_id":554
}
message_id:
The ID of the message whose status you want to get
Responce JSON:
{
"message_id":554,
"status":1,
}
message_id:
The ID of the message whose status you want to get
status:
Current WhatsApp message status
sent | 0 |
---|---|
delivered | 1 |
rejected | 2 |
error | 3 |
failed | 4 |
deleted | 5 |
pending | 6 |
seen | 7 |
name | Too Many Requests |
---|---|
message | Rate limit exceeded |
code | 0 |
status | 429 |
name | Invalid Parameter: [param_name] |
---|---|
message | Empty parameter or parameter validation error |
code | 1 |
status | 4 |
name | Internal server error |
---|---|
message | The server encountered an unexpected condition which prevented it from fulfilling the request |
code | 2 |
status | 500 |
name | Topup balance is required |
---|---|
message | User balance is empty |
code | 3 |
status | 402 |
name | Internal server error |
---|---|
message | The server encountered an unexpected condition which prevented it from fulfilling the request |
code | 4, // 5 and 6 |
status | 500 |
name | Service Unavailable |
---|---|
message | Message failed to send because more than 24 hours have passed since the customer last replied to this number. In this case, you can only send a template message |
code | 7 |
status | 503 |
name | Invalid credintals for file_url |
---|---|
message | Invalid MIME type file_url |
code | 8 |
status | 401 |
name | Invalid credintals for file_url |
---|---|
message | Invalid file extension |
code | 9 |
status | 401 |
сURL
C# HttpClient
GO
Java OkHttp
C -libcurl
PHP
NodJs
Python
curl --location 'https://web.it-decision.com/v1/api/send-whatsapp' \
--header 'Authorization: Basic api key' \
--header 'Content-Type: application/json' \
--data ' {"to":"38063xxxxxxx","type":"template","template":{"namespace":"xxxxx_xxxx_xxx_
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://web.it-decision.com/v1/api/send-whatsapp");
request.Headers.Add("Authorization", "Basic api key");
var content = new StringContent(" {\"to\":\"38063xxxxxxx\",\"type\":\"template\",\"template\":{\"namespace\":\"xxxxx_xxxx_xxx_xxx_xxxxx\",\"language\":{\"policy\":\"deterministic\",\"code\":\"en_US\"},\"name\":\"media_2_english\",\"components\":[{\"type\":\"header\",\"parameters\":[{\"type\":\"image\",\"image\":{\"link\":\"url image.jpg\"}}]}]}}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://web.it-decision.com/v1/api/send-whatsapp"
method := "POST"
payload := strings.NewReader(` {"to":"38063xxxxxxx","type":"template","template":{"namespace":"xxxxx_xxxx_xxx_xxx_xxxxx","language":{"policy":"deterministic","code":"en_US"},"name":"media_2_english","components":[{"type":"header","parameters":[{"type":"image","image":{"link":"url image.jpg"}}]}]}}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Authorization", "Basic api key")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, " {\"to\":\"38063xxxxxxx\",\"type\":\"template\",\"template\":{\"namespace\":\"xxxxx_xxxx_xxx_xxx_xxxxx\",\"language\":{\"policy\":\"deterministic\",\"code\":\"en_US\"},\"name\":\"media_2_english\",\"components\":[{\"type\":\"header\",\"parameters\":[{\"type\":\"image\",\"image\":{\"link\":\"url image.jpg\"}}]}]}}");
Request request = new Request.Builder()
.url("https://web.it-decision.com/v1/api/send-whatsapp")
.method("POST", body)
.addHeader("Authorization", "Basic api key")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, "https://web.it-decision.com/v1/api/send-whatsapp";
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Basic api key");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
const char *data = " {\"to\":\"38063xxxxxxx\",\"type\":\"template\",\"template\":{\"namespace\":\"xxxxx_xxxx_xxx_xxx_xxxxx\",\"language\":{\"policy\":\"deterministic\",\"code\":\"en_US\"},\"name\":\"media_2_english\",\"components\":[{\"type\":\"header\",\"parameters\":[{\"type\":\"image\",\"image\":{\"link\":\"url image.jpg\"}}]}]}}";
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://web.it-decision.com/v1/api/send-whatsapp',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>' {"to":"38063xxxxxxx","type":"template","template":{"namespace":"xxxxx_xxxx_xxx_xxx_xxxxx","language":{"policy":"deterministic","code":"en_US"},"name":"media_2_english","components":[{"type":"header","parameters":[{"type":"image","image":{"link":"url image.jpg"}}]}]}}',
CURLOPT_HTTPHEADER => array(
'Authorization: Basic api key',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://web.it-decision.com/v1/api/send-whatsapp',
'headers': {
'Authorization': 'Basic api key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"to": "38063xxxxxxx",
"type": "template",
"template": {
"namespace": "xxxxx_xxxx_xxx_xxx_xxxxx",
"language": {
"policy": "deterministic",
"code": "en_US"
},
"name": "media_2_english",
"components": [
{
"type": "header",
"parameters": [
{
"type": "image",
"image": {
"link": "url image.jpg"
}
}
]
}
]
}
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import http.client
import json
conn = http.client.HTTPSConnection("web.it-decision.com")
payload = json.dumps({
"to": "38063xxxxxxx",
"type": "template",
"template": {
"namespace": "xxxxx_xxxx_xxx_xxx_xxxxx",
"language": {
"policy": "deterministic",
"code": "en_US"
},
"name": "media_2_english",
"components": [
{
"type": "header",
"parameters": [
{
"type": "image",
"image": {
"link": "url image.jpg"
}
}
]
}
]
}
})
headers = {
'Authorization': 'Basic api key',
'Content-Type': 'application/json'
}
conn.request("POST", "/v1/api/send-whatsapp", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Last modified 5mo ago