
Con le API SMS di Sendapp puoi automatizzare le notifiche SMS con qualsiasi piattaforma
Pensate per le piccole e medie aziende, per rivoluzionare la comunicazione con i clienti.
WebHook Example Script
Create a script with the following content and provide its URL as WebHook.
define("API_KEY", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); try { if (isset($_SERVER["HTTP_X_SG_SIGNATURE"])) { $hash = base64_encode(hash_hmac('sha256', $_POST["messages"], API_KEY, true)); if ($hash === $_SERVER["HTTP_X_SG_SIGNATURE"]) { $messages = json_decode($_POST["messages"], true); /** * For example :- * $messages = [ * 0 => [ * "ID" => "1", * "number" => "+911234567890", * "message" => "This is a test message.", * "deviceID" => "1", * "simSlot" => "0", * "userID" => "1", * "status" => "Received", * "sentDate" => "2018-10-20T00:00:00+02:00", * "deliveredDate" => "2018-10-20T00:00:00+02:00" * "groupID" => null * ] * ] * * senDate represents the date and time when the message was received on the device. * deliveredDate represents the date and time when the message was received by the server. */ foreach ($messages as $message) { if(strtolower($message["message"]) === "hi") { // Reply to message using API or execute some commands. Possibilities are limitless. } } } else { http_response_code(401); error_log("Signature don't match!"); } } else { http_response_code(400); error_log("Signature not found!"); } } catch (Exception $e) { error_log($e->getMessage()); }PHP Integration
Include following code in your PHP file to start sending messages.
define("SERVER", "https://sms.sendapp.live"); define("API_KEY", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); define("USE_SPECIFIED", 0); define("USE_ALL_DEVICES", 1); define("USE_ALL_SIMS", 2); /** * @param string $number The mobile number where you want to send message. * @param string $message The message you want to send.. * @param int|string $device The ID of a device you want to use to send this message. * @param int $schedule Set it to timestamp when you want to send this message. * * @return array Returns The array containing information about the message. * @throws Exception If there is an error while sending a message. */ function sendSingleMessage($number, $message, $device = 0, $schedule = null) { $url = SERVER . "/services/send.php"; $postData = array('number' => $number, 'message' => $message, 'schedule' => $schedule, 'key' => API_KEY, 'devices' => $device); return sendRequest($url, $postData)["messages"][0]; } /** * @param array $messages The array containing numbers and messages. * @param int $option Set this to USE_SPECIFIED if you want to use devices and SIMs specified in devices argument. * Set this to USE_ALL_DEVICES if you want to use all available devices and their default SIM to send messages. * Set this to USE_ALL_SIMS if you want to use all available devices and all their SIMs to send messages. * @param array $devices The array of ID of devices you want to use to send these messages. * @param int $schedule Set it to timestamp when you want to send these messages. * @param bool $useRandomDevice Set it to true if you want to send messages using only one random device from selected devices. * * @return array Returns The array containing messages. * For example :- * [ * 0 => [ * "ID" => "1", * "number" => "+911234567890", * "message" => "This is a test message.", * "deviceID" => "1", * "simSlot" => "0", * "userID" => "1", * "status" => "Pending", * "sentDate" => "2018-10-20T00:00:00+02:00", * "deliveredDate" => null * "groupID" => ")V5LxqyBMEbQrl9*J$5bb4c03e8a07b7.62193871" * ] * ] * @throws Exception If there is an error while sending messages. */ function sendMessages($messages, $option = USE_SPECIFIED, $devices = [], $schedule = null, $useRandomDevice = false) { $url = SERVER . "/services/send.php"; $postData = [ 'messages' => json_encode($messages), 'schedule' => $schedule, 'key' => API_KEY, 'devices' => json_encode($devices), 'option' => $option, 'useRandomDevice' => $useRandomDevice ]; return sendRequest($url, $postData)["messages"]; } /** * @param int $listID The ID of the contacts list where you want to send this message. * @param string $message The message you want to send. * @param int $option Set this to USE_SPECIFIED if you want to use devices and SIMs specified in devices argument. * Set this to USE_ALL_DEVICES if you want to use all available devices and their default SIM to send messages. * Set this to USE_ALL_SIMS if you want to use all available devices and all their SIMs to send messages. * @param array $devices The array of ID of devices you want to use to send the message. * @param int $schedule Set it to timestamp when you want to send this message. * * @return array Returns The array containing messages. * @throws Exception If there is an error while sending messages. */ function sendMessageToContactsList($listID, $message, $option = USE_SPECIFIED, $devices = [], $schedule = null) { $url = SERVER . "/services/send.php"; $postData = [ 'listID' => $listID, 'message' => $message, 'schedule' => $schedule, 'key' => API_KEY, 'devices' => json_encode($devices), 'option' => $option ]; return sendRequest($url, $postData)["messages"]; } /** * @param int $id The ID of a message you want to retrieve. * * @return array The array containing a message. * @throws Exception If there is an error while getting a message. */ function getMessageByID($id) { $url = SERVER . "/services/read-messages.php"; $postData = [ 'key' => API_KEY, 'id' => $id ]; return sendRequest($url, $postData)["messages"][0]; } /** * @param string $groupID The group ID of messages you want to retrieve. * * @return array The array containing messages. * @throws Exception If there is an error while getting messages. */ function getMessagesByGroupID($groupID) { $url = SERVER . "/services/read-messages.php"; $postData = [ 'key' => API_KEY, 'groupId' => $groupID ]; return sendRequest($url, $postData)["messages"]; } /** * @param string $status The status of messages you want to retrieve. * @param int $startTimestamp Search for messages sent or received after this time. * @param int $endTimestamp Search for messages sent or received before this time. * * @return array The array containing messages. * @throws Exception If there is an error while getting messages. */ function getMessagesByStatus($status, $startTimestamp, $endTimestamp) { $url = SERVER . "/services/read-messages.php"; $postData = [ 'key' => API_KEY, 'status' => $status, 'startTimestamp' => $startTimestamp, 'endTimestamp' => $endTimestamp ]; return sendRequest($url, $postData)["messages"]; } /** * @param int $listID The ID of the contacts list where you want to add this contact. * @param string $number The mobile number of the contact. * @param string $name The name of the contact. * @param bool $resubscribe Set it to true if you want to resubscribe this contact if it already exists. * * @return array The array containing a newly added contact. * @throws Exception If there is an error while adding a new contact. */ function addContact($listID, $number, $name = null, $resubscribe = false) { $url = SERVER . "/services/manage-contacts.php"; $postData = [ 'key' => API_KEY, 'listID' => $listID, 'number' => $number, 'name' => $name, 'resubscribe' => $resubscribe ]; return sendRequest($url, $postData)["contact"]; } /** * @param int $listID The ID of the contacts list from which you want to unsubscribe this contact. * @param string $number The mobile number of the contact. * * @return array The array containing the unsubscribed contact. * @throws Exception If there is an error while setting subscription to false. */ function unsubscribeContact($listID, $number) { $url = SERVER . "/services/manage-contacts.php"; $postData = [ 'key' => API_KEY, 'listID' => $listID, 'number' => $number, 'unsubscribe' => true ]; return sendRequest($url, $postData)["contact"]; } /** * @return string The amount of message credits left. * @throws Exception If there is an error while getting message credits. */ function getBalance() { $url = SERVER . "/services/send.php"; $postData = [ 'key' => API_KEY, ]; $credits = sendRequest($url, $postData)["credits"]; return is_null($credits) ? "Unlimited" : $credits; } function sendRequest($url, $postData) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData)); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (curl_errno($ch)) { throw new Exception(curl_error($ch)); } curl_close($ch); if ($httpCode == 200) { $json = json_decode($response, true); if ($json == false) { if (empty($response)) { throw new Exception("Missing data in request. Please provide all the required information to send messages."); } else { throw new Exception($response); } } else { if ($json["success"]) { return $json["data"]; } else { throw new Exception($json["error"]["message"]); } } } else { throw new Exception("HTTP Error Code : {$httpCode}"); } }Send Single Message
try { // Send a message using the primary device. $msg = sendSingleMessage("+911234567890", "This is a test of single message."); // Send a message using the Device ID 1. $msg = sendSingleMessage("+911234567890", "This is a test of single message.", 1); // Send a message using the SIM in slot 1 of Device ID 1 (Represented as "1|0"). // SIM slot is an index so the index of the first SIM is 0 and the index of the second SIM is 1. // In this example, 1 represents Device ID and 0 represents SIM slot index. $msg = sendSingleMessage("+911234567890", "This is a test of single message.", "1|0"); // Send scheduled message using the primary device. $msg = sendSingleMessage("+911234567890", "This is a test of schedule feature.", null, strtotime("+2 minutes")); print_r($msg); echo "Successfully sent a message."; } catch (Exception $e) { echo $e->getMessage(); }Send Bulk Messages
$messages = array(); for ($i = 1; $i <= 12; $i++) { array_push($messages, [ "number" => "+911234567890", "message" => "This is a test #{$i} of PHP version. Testing bulk message functionality." ]); } try { // Send messages using the primary device. sendMessages($messages); // Send messages using default SIM of all available devices. Messages will be split between all devices. sendMessages($messages, USE_ALL_DEVICES); // Send messages using all SIMs of all available devices. Messages will be split between all SIMs. sendMessages($messages, USE_ALL_SIMS); // Send messages using only specified devices. Messages will be split between devices or SIMs you specified. // If you send 12 messages using this code then 4 messages will be sent by Device ID 1, other 4 by SIM in slot 1 of // Device ID 2 (Represendted as "2|0") and remaining 4 by SIM in slot 2 of Device ID 2 (Represendted as "2|1"). sendMessages($messages, USE_SPECIFIED, [1, "2|0", "2|1"]); // Send messages on schedule using the primary device. sendMessages($messages, null, null, strtotime("+2 minutes")); // Send a message to contacts in contacts list with ID of 1. sendMessageToContactsList(1, "Test", USE_SPECIFIED, 1); // Send a message on schedule to contacts in contacts list with ID of 1. $msgs = sendMessageToContactsList(1, "Test", null, null, strtotime("+2 minutes")); print_r($msgs); echo "Successfully sent bulk messages."; } catch (Exception $e) { echo $e->getMessage(); }Get remaining message credits
try { $credits = getBalance(); echo "Message Credits Remaining: {$credits}"; } catch (Exception $e) { echo $e->getMessage(); }Get messages and their current status
try { // Get a message using the ID. $msg = getMessageByID(1); print_r($msg); // Get messages using the Group ID. $msgs = getMessagesByGroupID(')V5LxqyBMEbQrl9*J$5bb4c03e8a07b7.62193871'); print_r($msgs); // Get messages received in last 24 hours. $msgs = getMessagesByStatus("Received", time() - 86400); print_r($msgs); } catch (Exception $e) { echo $e->getMessage(); }Gestisci contatti
try { // Add a new contact to contacts list 1 or resubscribe the contact if it already exists. $contact = addContact(1, "+911234567890", "Test", true); print_r($contact); // Unsubscribe a contact using the mobile number. $contact = unsubscribeContact(1, "+911234567890"); print_r($contact); } catch (Exception $e) { echo $e->getMessage(); }C# Integration
using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; using System.Web; using Gateway_Sample_Application.Properties; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace SMS { static class API { private static readonly string Server = "https://sms.sendapp.live" private static readonly string Key = "6e1bdb4ed91f3b83071dd5a520c9d226ea19245e"; public enum Option { USE_SPECIFIED = 0, USE_ALL_DEVICES = 1, USE_ALL_SIMS = 2 } /// <summary> /// Send single message to specific mobile number. /// </summary> /// <param name="number">The mobile number where you want to send message.</param> /// <param name="message">The message you want to send.</param> /// <param name="device">The ID of a device you want to use to send this message.</param> /// <param name="schedule">Set it to timestamp when you want to send this message.</param> /// <exception>If there is an error while sending a message.</exception> /// <returns>The dictionary containing information about the message.</returns> public static Dictionary<string, object> SendSingleMessage(string number, string message, string device = "0", long? schedule = null) { var values = new Dictionary<string, object> { { "number", number}, { "message", message}, { "schedule", schedule }, { "key", Key }, { "devices", device } }; return GetMessages(GetResponse($"{Server}/services/send.php", values)["messages"])[0]; } /// <summary> /// Send multiple messages to different mobile numbers. /// </summary> /// <param name="messages">The array containing numbers and messages.</param> /// <param name="option">Set this to USE_SPECIFIED if you want to use devices and SIMs specified in devices argument. /// Set this to USE_ALL_DEVICES if you want to use all available devices and their default SIM to send messages. /// Set this to USE_ALL_SIMS if you want to use all available devices and all their SIMs to send messages.</param> /// <param name="devices">The array of ID of devices you want to use to send these messages.</param> /// <param name="schedule">Set it to timestamp when you want to send this message.</param> /// <param name="useRandomDevice">Set it to true if you want to send messages using only one random device from selected devices.</param> /// <exception>If there is an error while sending messages.</exception> /// <returns>The array containing messages.</returns> public static Dictionary<string, object>[] SendMessages(List<Dictionary<string, string>> messages, Option option = Option.USE_SPECIFIED, string[] devices = null, long? schedule = null, bool useRandomDevice = false) { var values = new Dictionary<string, object> { { "messages", JsonConvert.SerializeObject(messages)}, { "schedule", schedule }, { "key", Key }, { "devices", devices }, { "option", (int) option }, { "useRandomDevice", useRandomDevice } }; return GetMessages(GetResponse($"{Server}/services/send.php", values)["messages"]); } /// <summary> /// Send a message to contacts in specified contacts list. /// </summary> /// <param name="listID">The ID of the contacts list where you want to send this message.</param> /// <param name="message">The message you want to send.</param> /// <param name="option">Set this to USE_SPECIFIED if you want to use devices and SIMs specified in devices argument. /// Set this to USE_ALL_DEVICES if you want to use all available devices and their default SIM to send messages. /// Set this to USE_ALL_SIMS if you want to use all available devices and all their SIMs to send messages.</param> /// <param name="devices">The array of ID of devices you want to use to send these messages.</param> /// <param name="schedule">Set it to timestamp when you want to send this message.</param> /// <exception>If there is an error while sending messages.</exception> /// <returns>The array containing messages.</returns> public static Dictionary<string, object>[] SendMessageToContactsList(int listID, string message, Option option = Option.USE_SPECIFIED, string[] devices = null, long? schedule = null) { var values = new Dictionary<string, object> { { "listID", listID}, { "message", message}, { "schedule", schedule }, { "key", Key }, { "devices", devices }, { "option", (int) option } }; return GetMessages(GetResponse($"{Server}/services/send.php", values)["messages"]); } /// <summary> /// Get a message using the ID. /// </summary> /// <param name="id">The ID of a message you want to retrieve.</param> /// <exception>If there is an error while getting a message.</exception> /// <returns>The dictionary containing information about the message.</returns> public static Dictionary<string, object> GetMessageByID(int id) { var values = new Dictionary<string, object> { { "key", Key }, { "id", id } }; return GetMessages(GetResponse($"{Server}/services/read-messages.php", values)["messages"])[0]; } /// <summary> /// Get messages using the Group ID. /// </summary> /// <param name="groupID">The group ID of messages you want to retrieve.</param> /// <exception>If there is an error while getting messages.</exception> /// <returns>The array containing messages.</returns> public static Dictionary<string, object>[] GetMessagesByGroupID(string groupID) { var values = new Dictionary<string, object> { { "key", Key }, { "groupId", groupID } }; return GetMessages(GetResponse($"{Server}/services/read-messages.php", values)["messages"]); } /// <summary> /// Get messages using the status. /// </summary> /// <param name="status">The status of messages you want to retrieve.</param> /// <param name="startTimestamp">Search for messages sent or received after this time.</param> /// <param name="endTimestamp">Search for messages sent or received before this time.</param> /// <exception>If there is an error while getting messages.</exception> /// <returns>The array containing messages.</returns> public static Dictionary<string, object>[] GetMessagesByStatus(string status, long? startTimestamp = null, long? endTimestamp = null) { var values = new Dictionary<string, object> { { "key", Key }, { "status", status }, { "startTimestamp", startTimestamp }, { "endTimestamp", endTimestamp } }; return GetMessages(GetResponse($"{Server}/services/read-messages.php", values)["messages"]); } /// <summary> /// Add a new contact to contacts list. /// </summary> /// <param name="listID">The ID of the contacts list where you want to add this contact.</param> /// <param name="number">The mobile number of the contact.</param> /// <param name="name">The name of the contact.</param> /// <param name="resubscribe">Set it to true if you want to resubscribe this contact if it already exists.</param> /// <returns>A dictionary containing details about a newly added contact.</returns> public static Dictionary<string, object> AddContact(int listID, string number, string name = null, bool resubscribe = false) { var values = new Dictionary<string, object> { {"key", Key}, {"listID", listID}, {"number", number}, {"name", name}, {"resubscribe", resubscribe ? '1' : '0'}, }; JObject jObject = (JObject) GetResponse($"{Server}/services/manage-contacts.php", values)["contact"]; return jObject.ToObject<Dictionary<string, object>>(); } /// <summary> /// Unsubscribe a contact from the contacts list. /// </summary> /// <param name="listID">The ID of the contacts list from which you want to unsubscribe this contact.</param> /// <param name="number">The mobile number of the contact.</param> /// <returns>A dictionary containing details about the unsubscribed contact.</returns> public static Dictionary<string, object> UnsubscribeContact(int listID, string number) { var values = new Dictionary<string, object> { {"key", Key}, {"listID", listID}, {"number", number}, {"unsubscribe", '1'} }; JObject jObject = (JObject)GetResponse($"{Server}/services/manage-contacts.php", values)["contact"]; return jObject.ToObject<Dictionary<string, object>>(); } /// <summary> /// Get remaining message credits. /// </summary> /// <exception>If there is an error while getting message credits.</exception> /// <returns>The amount of message credits left.</returns> public static string GetBalance() { var values = new Dictionary<string, object> { {"key", Key} }; JToken credits = GetResponse($"{Server}/services/send.php", values)["credits"]; if (credits.Type != JTokenType.Null) { return credits.ToString(); } return "Unlimited"; } private static Dictionary<string, object>[] GetMessages(JToken messagesJToken) { JArray jArray = (JArray)messagesJToken; var messages = new Dictionary<string, object>[jArray.Count]; for (var index = 0; index < jArray.Count; index++) { messages[index] = jArray[index].ToObject<Dictionary<string, object>>(); } return messages; } private static JToken GetResponse(string url, Dictionary<string, object> postData) { var request = (HttpWebRequest)WebRequest.Create(url); var dataString = CreateDataString(postData); var data = Encoding.UTF8.GetBytes(dataString); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; using (var stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } var response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { using (StreamReader streamReader = new StreamReader(response.GetResponseStream())) { var jsonResponse = streamReader.ReadToEnd(); try { JObject jObject = JObject.Parse(jsonResponse); if ((bool)jObject["success"]) { return jObject["data"]; } throw new Exception(jObject["error"]["message"].ToString()); } catch (JsonReaderException) { if (string.IsNullOrEmpty(jsonResponse)) { throw new InvalidDataException("Missing data in request. Please provide all the required information to send messages."); } throw new Exception(jsonResponse); } } } throw new WebException($"HTTP Error : {(int)response.StatusCode} {response.StatusCode}"); } private static string CreateDataString(Dictionary<string, object> data) { StringBuilder dataString = new StringBuilder(); bool first = true; foreach (var obj in data) { if (obj.Value != null) { if (first) { first = false; } else { dataString.Append("&"); } dataString.Append(HttpUtility.UrlEncode(obj.Key)); dataString.Append("="); dataString.Append(obj.Value is string[] ? HttpUtility.UrlEncode(JsonConvert.SerializeObject(obj.Value)) : HttpUtility.UrlEncode(obj.Value.ToString())); } } return dataString.ToString(); } } }Send Single Message
try { // Send a message using the primary device. SMS.API.SendSingleMessage("+911234567890", "This is a test of single message."); // Send a message using the Device ID 1. Dictionary<string, object> message = SMS.API.SendSingleMessage("+911234567890", "This is a test of single message.", "1"); // Send a message using the SIM in slot 1 of Device ID 1 (Represented as "1|0"). // SIM slot is an index so the index of the first SIM is 0 and the index of the second SIM is 1. // In this example, 1 represents Device ID and 0 represents SIM slot index. Dictionary<string, object> message = SMS.API.SendSingleMessage("+911234567890", "This is a test of single message.", "1|0"); // Send scheduled message using the primary device. long timestamp = (long) DateTime.UtcNow.AddMinutes(2).Subtract(new DateTime(1970, 1, 1)).TotalSeconds; Dictionary<string, object> message = SendSingleMessage(textBoxNumber.Text, textBoxMessage.Text, null, timestamp); MessageBox.Show("Successfully sent a message."); } catch (Exception exception) { MessageBox.Show(exception.Message, "!Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }Send Bulk Messages
List<Dictionary<string, string>> messages = new List<Dictionary<string, string>>(); for (int i = 1; i <= 12; i++) { var message = new Dictionary<string, string> { { "number", "+911234567890" }, { "message", "This is a test #{$i} of C# version. Testing bulk message functionality." } }; messages.Add(message); } try { // Send messages using the primary device. SMS.API.SendMessages(messages); // Send messages using default SIM of all available devices. Messages will be split between all devices. SMS.API.SendMessages(messages, SMS.API.Option.USE_ALL_DEVICES); // Send messages using all SIMs of all available devices. Messages will be split between all SIMs. SMS.API.SendMessages(messages, SMS.API.Option.USE_ALL_SIMS); // Send messages using only specified devices. Messages will be split between devices or SIMs you specified. // If you send 12 messages using this code then 4 messages will be sent by Device ID 1, other 4 by SIM in slot 1 of // Device ID 2 (Represendted as "2|0") and remaining 4 by SIM in slot 2 of Device ID 2 (Represendted as "2|1"). SMS.API.SendMessages(messages, SMS.API.Option.USE_SPECIFIED, new [] {"1", "2|0", "2|1"}); // Send messages on schedule using the primary device. long timestamp = (long) DateTime.UtcNow.AddMinutes(2).Subtract(new DateTime(1970, 1, 1)).TotalSeconds; Dictionary<string, object>[] messages = SMS.API.SendMessages(messages, Option.USE_SPECIFIED, null, timestamp); // Send a message to contacts in contacts list with ID of 1. Dictionary<string, object>[] messages = SMS.API.SendMessageToContactsList(1, "Test", SMS.API.Option.USE_SPECIFIED, new [] {"1"}); // Send a message on schedule to contacts in contacts list with ID of 1. Dictionary<string, object>[] messages = SMS.API.SendMessageToContactsList(1, "Test #1", Option.USE_SPECIFIED, null, timestamp); MessageBox.Show("Success"); } catch (Exception exception) { MessageBox.Show(exception.Message, "!Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }Get remaining message credits
try { string credits = SMS.API.GetBalance(); MessageBox.Show($"Message Credits Remaining: {credits}"); } catch (Exception exception) { MessageBox.Show(exception.Message, "!Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }Get messages and their current status
try { // Get a message using the ID. Dictionary<string, object> message = SMS.API.GetMessageByID(1); // Get messages using the Group ID. Dictionary<string, object>[] messages = SMS.API.GetMessagesByGroupID(")V5LxqyBMEbQrl9*J$5bb4c03e8a07b7.62193871"); // Get messages received in last 24 hours. long timestamp = (long) DateTime.UtcNow.AddHours(-24).Subtract(new DateTime(1970, 1, 1)).TotalSeconds; GetMessagesByStatus("Received", timestamp); } catch (Exception exception) { MessageBox.Show(exception.Message, "!Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }Gestisci contatti
try { // Add a new contact to contacts list 1 or resubscribe the contact if it already exists. Dictionary<string, object> contact = SMS.API.AddContact(1, "+911234567890", "Test C#", true); // Unsubscribe a contact using the mobile number. Dictionary<string, object> contact = UnsubscribeContact(1, "+911234567890"); } catch (Exception exception) { MessageBox.Show(exception.Message, "!Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }Bereit, mit SendApp Agent zu starten?
Starte die kostenlose Testphase: WhatsApp, KI und Automatisierung in einem Dashboard.
Kostenlos testen