Odesílání zpráv šablon WhatsApp pomocí rozšířených zpráv
Tento článek popisuje, jak odesílat zprávy šablony WhatsApp pomocí sady SDK pokročilých komunikačních zpráv.
Požadavky
- Zaregistrujte účet WhatsApp Business ve svém prostředku Azure Communication Services.
- Vytvořte zprávu šablony WhatsApp.
- Aktivní telefonní číslo Aplikace WhatsApp pro příjem zpráv.
Objektový model
Následující třídy a rozhraní zpracovávají některé z hlavních funkcí sady SDK zpráv služby Azure Communication Services pro .NET.
Název třídy | Popis |
---|---|
NotificationMessagesClient |
Připojí se k prostředku Azure Communication Services. Odesílá zprávy. |
MessageTemplate |
Definuje, kterou šablonu použijete, a obsah vlastností šablony pro vaši zprávu. |
TemplateNotificationContent |
Definuje "kdo" a "co" zprávy šablony, kterou chcete odeslat. |
Poznámka:
Další informace najdete v sadě Azure SDK pro .NET s referenčními informacemi o oboru názvů Azure.Communication.Messages.
Podporované typy šablon WhatsApp
Typ šablony | Popis |
---|---|
Textové šablony zpráv | Šablony zpráv WhatsApp jsou specifické formáty zpráv s parametry nebo bez parametrů. |
Šablony zpráv založené na médiích | Šablony zpráv WhatsApp s parametry médií pro součásti záhlaví. |
Interaktivní šablony zpráv | Interaktivní šablony zpráv rozšiřují obsah, který můžete příjemcům posílat, včetně interaktivních tlačítek pomocí objektu komponent. Podporují se jak volání k akci, tak rychlá odpověď. |
Šablony zpráv založené na poloze | Šablony zpráv WhatsApp s parametry umístění v zeměpisná délka a zeměpisná šířka pro součásti záhlaví. |
Běžná konfigurace
Podle těchto kroků přidejte potřebné fragmenty kódu do funkce Main souboru Program.cs
.
- Vytvořte a spravujte zprávu šablony WhatsApp.
- Ověřte klienta.
- Nastavte ID registrace kanálu.
- Nastavte seznam příjemců.
Vytvoření a správa zprávy šablony WhatsApp
Šablony zpráv WhatsApp jsou specifické formáty zpráv, které firmy používají k odesílání oznámení nebo zpráv péče o zákazníky lidem, kteří se přihlásili k oznámením. Zprávy můžou zahrnovat připomenutí událostí, dodací informace, řešení problému nebo aktualizace plateb. Než začnete používat sadu SDK pro pokročilé zasílání zpráv k odesílání šablonovaných zpráv, musí uživatel vytvořit požadované šablony na platformě WhatsApp Business Platform.
Další informace o požadavcích Na WhatsApp pro šablony najdete v referenčních informacích k rozhraní API whatsApp Business Platform:
- Vytváření a správa šablon
- Zobrazit součásti šablony.
- Odeslat zprávy šablony
- Firmy musí také dodržovat požadavky na výslovný souhlas před odesíláním zpráv uživatelům Aplikace WhatsApp.
Ověření klienta
Sada Sdk pro zprávy používá NotificationMessagesClient
k odesílání zpráv. Metoda NotificationMessagesClient
se ověřuje pomocí vašeho připojovací řetězec získaného z prostředku Azure Communication Services na webu Azure Portal. Další informace o připojovací řetězec najdete v tématu access-your-connection-strings-and-service-endpoints.
Pro zjednodušení tento rychlý start používá k ověření připojovací řetězec. V produkčních prostředích doporučujeme používat instanční objekty.
Získejte připojovací řetězec z prostředku Azure Communication Services na webu Azure Portal. Vlevo přejděte na Keys
kartu. Zkopírujte Connection string
pole pro primární klíč. Připojovací řetězec je ve formátu endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}
.
Nastavte proměnnou COMMUNICATION_SERVICES_CONNECTION_STRING
prostředí na hodnotu připojovací řetězec.
Otevřete okno konzoly a zadejte následující příkaz:
setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"
Po přidání proměnné prostředí možná budete muset restartovat všechny spuštěné programy, které budou muset přečíst proměnnou prostředí, včetně okna konzoly. Pokud například jako editor používáte Sadu Visual Studio, restartujte sadu Visual Studio před spuštěním příkladu.
Další informace o tom, jak nastavit proměnnou prostředí pro váš systém, najdete v postupu při ukládání připojovací řetězec do proměnné prostředí.
Pokud chcete vytvořit instanci , NotificationMessagesClient
přidejte do Main
metody následující kód:
// Retrieve connection string from environment variable
string connectionString =
Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
// Instantiate the client
var notificationMessagesClient = new NotificationMessagesClient(connectionString);
Nastavení ID registrace kanálu
Během registrace kanálu jste vytvořili identifikátor GUID ID registrace kanálu. Najdete ho na portálu na kartě Kanály vašeho prostředku Azure Communication Services.
Přiřaďte ji k proměnné s názvem channelRegistrationId.
var channelRegistrationId = new Guid("<your channel registration ID GUID>");
Nastavení seznamu příjemců
Musíte zadat aktivní telefonní číslo přidružené k účtu WhatsApp. Tento účet WhatsApp obdrží šablonu, text a mediální zprávy odeslané v tomto rychlém startu.
V tomto příkladu můžete použít svoje osobní telefonní číslo.
Telefonní číslo příjemce nemůže být firemní telefonní číslo (ID odesílatele) přidružené k registraci kanálu WhatsApp. ID odesílatele se zobrazí jako odesílatel textu a mediálních zpráv odeslaných příjemci.
Telefonní číslo musí obsahovat kód země. Další informace o formátování telefonních čísel naleznete v dokumentaci WhatsApp pro formáty telefonních čísel.
Poznámka:
V seznamu příjemců se aktuálně podporuje jenom jedno telefonní číslo.
Vytvořte seznam příjemců takto:
var recipientList = new List<string> { "<to WhatsApp phone number>" };
Příklad:
// Example only
var recipientList = new List<string> { "+14255550199" };
Zahájení odesílání zpráv mezi firmou a uživatelem WhatsApp
Konverzace mezi účtem WhatsApp Business a uživatelem WhatsApp je možné zahájit jedním ze dvou způsobů:
- Firma odešle uživateli WhatsApp zprávu šablony.
- Uživatel WhatsApp odešle jakoukoli zprávu na firemní číslo.
Firma nemůže zahájit interaktivní konverzaci. Firma může odeslat interaktivní zprávu jenom po přijetí zprávy od uživatele. Firma může uživateli posílat jenom interaktivní zprávy během aktivní konverzace. Jakmile vyprší platnost 24hodinového okna konverzace, může interaktivní konverzaci restartovat jenom uživatel. Další informace o konverzacích najdete v definici aplikace WhatsApp Business Platform.
Pokud chcete zahájit interaktivní konverzaci z vašeho osobního účtu WhatsApp, pošlete zprávu na vaše firemní číslo (ID odesílatele).
Nastavení prostředí
Vytvoření projektu .NET
Pokud chcete vytvořit projekt, postupujte podle kurzu v tématu Vytvoření konzolové aplikace .NET pomocí sady Visual Studio.
Pokud chcete kód zkompilovat, stiskněte Ctrl+F7.
Nainstalujte balíček .
Nainstalujte balíček NuGet Azure.Communication.Messages do projektu jazyka C#.
- Otevřete Správce balíčků NuGet na adrese
Project
>Manage NuGet Packages...
. - Vyhledejte balíček
Azure.Communication.Messages
. - Nainstalujte nejnovější verzi.
Nastavení architektury aplikace
Otevřete soubor Program.cs
v textovém editoru.
Obsah souboru Program.cs
nahraďte následujícím kódem:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Azure;
using Azure.Communication.Messages;
namespace AdvancedMessagingQuickstart
{
class Program
{
public static async Task Main(string[] args)
{
Console.WriteLine("Azure Communication Services - Advanced Messages quickstart samples.");
// Quickstart code goes here
}
}
}
Pokud chcete použít funkce rozšířeného zasílání zpráv, přidejte direktivu using
Azure.Communication.Messages
pro zahrnutí oboru názvů.
using Azure.Communication.Messages;
Příklady kódu
Podle těchto kroků přidejte požadované fragmenty kódu do funkce Main souboru Program.cs
.
- Seznam šablon WhatsApp na webu Azure Portal
- Odeslat zprávu šablony bez parametrů
- Odeslat zprávu šablony s textovými parametry v textu
- Odeslat zprávu šablony s parametrem média v záhlaví.
- Odeslat zprávu šablony s umístěním v záhlaví
- Odeslání zprávy šablony pomocí tlačítek pro rychlé odpovědi
- Odeslat zprávu šablony s tlačítky akcí s dynamickým odkazem
- Odeslat zprávu šablony s tlačítky akcí s voláním na tlačítka akcí se statickým odkazem
Výpis šablon WhatsApp na webu Azure Portal
Šablony můžete zobrazit na webu Azure Portal tak, že přejdete na pokročilé šablony zasílání zpráv>prostředků >služby Azure Communication Service.
Výběrem šablony zobrazíte podrobnosti.
Pole content
podrobností šablony může obsahovat vazby parametrů. Vazby parametrů lze oznamovat takto:
- Pole
format
s hodnotou, napříkladIMAGE
. - Dvojité závorky obklopují číslo, například
{{1}}
. Číslo indexované na 1 označuje pořadí, ve kterém musí být zadány hodnoty vazby k vytvoření šablony zprávy.
Případně můžete zobrazit a upravit všechny šablony účtu WhatsApp Business v šablonách zpráv v nástrojích> účtu WhatsApp Manager.>
Pokud chcete zobrazit seznam šablon prostřednictvím kódu programu, můžete načíst všechny šablony pro ID kanálu následujícím způsobem:
MessageTemplateClient messageTemplateClient = new MessageTemplateClient(connectionString);
Pageable<MessageTemplateItem> templates = messageTemplateClient.GetTemplates(channelRegistrationId);
Odeslání zprávy šablony bez parametrů
Pokud šablona nevyžaduje parametry, nemusíte při vytváření zadávat MessageTemplate
žádné hodnoty ani vazby.
var messageTemplate = new MessageTemplate(templateName, templateLanguage);
Příklad
Nepřebíná sample_template
žádné parametry.
MessageTemplate
Sestavte odkazování na název a jazyk cílové šablony.
string templateName = "sample_template";
string templateLanguage = "en_us";
var sampleTemplate = new MessageTemplate(templateName, templateLanguage);
Odeslání zprávy šablony s textovými parametry v textu
Slouží MessageTemplateText
k definování parametrů v těle označeném dvojitými hranatými závorkami kolem čísla, například {{1}}
. Číslo, index zahájený na 1, označuje pořadí, ve kterém musí být zadány hodnoty vazby k vytvoření šablony zprávy. Zahrnutí parametrů, které nejsou v šabloně, je neplatné.
Definice šablony se dvěma parametry:
{
"type": "BODY",
"text": "Message with two parameters: {{1}} and {{2}}"
}
Příklady
sample_shipping_confirmation
šablona:
V této ukázce má tělo šablony jeden parametr:
{
"type": "BODY",
"text": "Your package has been shipped. It will be delivered in {{1}} business days."
},
Parametry jsou definovány s MessageTemplateValue
hodnotami a MessageTemplateWhatsAppBindings
vazbami. K sestavení MessageTemplate
použijte hodnoty a vazby .
string templateName = "sample_shipping_confirmation";
string templateLanguage = "en_us";
var threeDays = new MessageTemplateText("threeDays", "3");
WhatsAppMessageTemplateBindings bindings = new();
bindings.Body.Add(new(threeDays.Name));
MessageTemplate shippingConfirmationTemplate = new(templateName, templateLanguage);
shippingConfirmationTemplate.Bindings = bindings;
shippingConfirmationTemplate.Values.Add(threeDays);
Odeslání zprávy šablony s parametrem média v hlavičce
Použijte MessageTemplateImage
, MessageTemplateVideo
nebo MessageTemplateDocument
definujte parametr média v hlavičce.
Definice šablony s parametrem média obrázku v hlavičce:
{
"type": "HEADER",
"format": "IMAGE"
},
Aplikace format
WhatsApp podporuje různé typy médií. V sadě .NET SDK každý typ média používá odpovídající typ MessageTemplateValue.
Formát | MessageTemplateValue – typ | Typ souboru |
---|---|---|
IMAGE |
MessageTemplateImage |
png, jpg |
VIDEO |
MessageTemplateVideo |
mp4 |
DOCUMENT |
MessageTemplateDocument |
Další informace o podporovaných typech médií a omezení velikosti najdete v dokumentaci aplikace WhatsApp k médiím zpráv.
Sestavení šablony zpráv pro médium obrázku:
var url = new Uri("< Your media URL >");
var media = new MessageTemplateImage("image", url);
WhatsAppMessageTemplateBindings bindings = new();
bindings.Header.Add(new(media.Name));
var messageTemplate = new MessageTemplate(templateName, templateLanguage);
template.Bindings = bindings;
template.Values.Add(media);
Příklady
sample_movie_ticket_confirmation
šablona:
V této ukázce vyžaduje hlavička šablony obrázek:
{
"type": "HEADER",
"format": "IMAGE"
},
Text šablony vyžaduje čtyři textové parametry:
{
"type": "BODY",
"text": "Your ticket for *{{1}}*\n*Time* - {{2}}\n*Venue* - {{3}}\n*Seats* - {{4}}"
},
Vytvořte jednu MessageTemplateImage
a čtyři MessageTemplateText
proměnné. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony.
string templateName = "sample_movie_ticket_confirmation";
string templateLanguage = "en_us";
var imageUrl = new Uri("https://aka.ms/acsicon1");
var image = new MessageTemplateImage("image", imageUrl);
var title = new MessageTemplateText("title", "Contoso");
var time = new MessageTemplateText("time", "July 1st, 2023 12:30PM");
var venue = new MessageTemplateText("venue", "Southridge Video");
var seats = new MessageTemplateText("seats", "Seat 1A");
WhatsAppMessageTemplateBindings bindings = new();
bindings.Header.Add(new(image.Name));
bindings.Body.Add(new(title.Name));
bindings.Body.Add(new(time.Name));
bindings.Body.Add(new(venue.Name));
bindings.Body.Add(new(seats.Name));
MessageTemplate movieTicketConfirmationTemplate = new(templateName, templateLanguage);
movieTicketConfirmationTemplate.Values.Add(image);
movieTicketConfirmationTemplate.Values.Add(title);
movieTicketConfirmationTemplate.Values.Add(time);
movieTicketConfirmationTemplate.Values.Add(venue);
movieTicketConfirmationTemplate.Values.Add(seats);
movieTicketConfirmationTemplate.Bindings = bindings;
Další příklady
- VIDEO: Použití ukázkové šablony sample_happy_hour_announcement
- DOKUMENT: Použití ukázkové šablony sample_flight_confirmation
Odeslání zprávy šablony s umístěním v záhlaví
Slouží MessageTemplateLocation
k definování parametru umístění v hlavičce.
Definice šablony pro součást záhlaví vyžadující umístění jako:
{
"type": "header",
"parameters": [
{
"type": "location",
"location": {
"latitude": "<LATITUDE>",
"longitude": "<LONGITUDE>",
"name": "<NAME>",
"address": "<ADDRESS>"
}
}
]
}
format
Můžou vyžadovat různé typy médií. V sadě .NET SDK každý typ média používá odpovídající typ MessageTemplateValue.
Vlastnosti | Popis | Typ |
---|---|---|
ADDRESS |
Adresa, která se zobrazí za NAME hodnotou pod obecnou mapou v horní části zprávy. |
string |
LATITUDE |
Zeměpisná šířka umístění. | double |
LONGITUDE |
Zeměpisná délka umístění. | double |
LOCATIONNAME |
Text, který se zobrazí bezprostředně pod obecnou mapou v horní části zprávy | string |
Další informace o šablonách založených na poloze najdete v dokumentaci aplikace WhatsApp k médiím zpráv.
Příklad
sample_movie_location
šablona:
Sestavení šablony zprávy založené na umístění:
var location = new MessageTemplateLocation("location");
location.LocationName = "Pablo Morales";
location.Address = "1 Hacker Way, Menlo Park, CA 94025";
location.Position = new Azure.Core.GeoJson.GeoPosition(longitude: 122.148981, latitude: 37.483307);
WhatsAppMessageTemplateBindings location_bindings = new();
location_bindings.Header.Add(new(location.Name));
var messageTemplateWithLocation = new MessageTemplate(templateNameWithLocation, templateLanguage);
messageTemplateWithLocation.Values.Add(location);
messageTemplateWithLocation.Bindings = location_bindings;
Odeslání zprávy šablony pomocí tlačítek pro rychlé odpovědi
Slouží MessageTemplateQuickAction
k definování datové části pro tlačítka rychlých odpovědí a MessageTemplateQuickAction
objekty s následujícími třemi atributy.
Vlastnosti | Popis | Typ |
---|---|---|
Název | Použitý name k vyhledání hodnoty v MessageTemplateWhatsAppBindings . |
string |
Text | Volitelná rychlá akce text . |
string |
Datová část | Přiřazení payload k tlačítku dostupnému ve zprávě odpovědět, pokud uživatel tlačítko vybere. |
string |
Definice šablony s tlačítky pro rychlé odpovědi:
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Yes"
},
{
"type": "QUICK_REPLY",
"text": "No"
}
]
}
Pořadí zobrazení tlačítek v definici šablony musí odpovídat pořadí, ve kterém jsou tlačítka definována při vytváření vazeb pomocí MessageTemplateWhatsAppBindings
.
Další informace o datové části v odpovědích rychlých odpovědí od uživatele najdete v dokumentaci WhatsApp k přijetí zpětného volání z tlačítka Rychlá odpověď.
Příklad
sample_issue_resolution
šablona:
Text šablony vyžaduje jeden textový parametr:
{
"type": "BODY",
"text": "Hi {{1}}, were we able to solve the issue that you were facing?"
},
Šablona obsahuje dvě předvyplněná tlačítka Yes
pro odpovědi a No
.
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Yes"
},
{
"type": "QUICK_REPLY",
"text": "No"
}
]
}
Vytvořte jednu MessageTemplateText
a dvě MessageTemplateQuickAction
proměnné. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony. Pořadí je také důležité při definování tlačítek vazeb.
string templateName = "sample_issue_resolution";
string templateLanguage = "en_us";
var name = new MessageTemplateText(name: "name", text: "Kat");
var yes = new MessageTemplateQuickAction(name: "Yes"){ Payload = "Kat said yes" };
var no = new MessageTemplateQuickAction(name: "No") { Payload = "Kat said no" };
WhatsAppMessageTemplateBindings bindings = new();
bindings.Body.Add(new(name.Name));
bindings.Buttons.Add(new(WhatsAppMessageButtonSubType.QuickReply.ToString(), yes.Name));
bindings.Buttons.Add(new(WhatsAppMessageButtonSubType.QuickReply.ToString(), no.Name));
MessageTemplate issueResolutionTemplate = new(templateName, templateLanguage);
issueResolutionTemplate.Values.Add(name);
issueResolutionTemplate.Values.Add(yes);
issueResolutionTemplate.Values.Add(no);
issueResolutionTemplate.Bindings = bindings;
Odeslání zprávy šablony s tlačítky akcí s dynamickým odkazem
Slouží MessageTemplateQuickAction
k definování přípony ADRESY URL pro tlačítka akcí volání a MessageTemplateQuickAction
objektu mají následující dva atributy.
Vlastnosti | Popis | Typ |
---|---|---|
Název | Slouží name k vyhledání hodnoty v MessageTemplateWhatsAppBindings . |
string |
Text | Ten text se připojí k adrese URL. |
string |
Tlačítka definice šablony:
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Take Survey",
"url": "https://www.example.com/{{1}}"
}
]
}
Pořadí zobrazení tlačítek v definici šablony musí odpovídat pořadí, ve kterém jsou tlačítka definována při vytváření vazeb pomocí MessageTemplateWhatsAppBindings
.
Příklad
sample_purchase_feedback
šablona:
Tato ukázková šablona přidá do zprávy tlačítko s dynamickým odkazem na adresu URL. Používá také obrázek v záhlaví a textový parametr v těle.
V této ukázce vyžaduje hlavička šablony obrázek:
{
"type": "HEADER",
"format": "IMAGE"
},
Text šablony vyžaduje jeden textový parametr:
{
"type": "BODY",
"text": "Thank you for purchasing {{1}}! We value your feedback and would like to learn more about your experience."
},
Šablona obsahuje tlačítko dynamické adresy URL s jedním parametrem:
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Take Survey",
"url": "https://www.example.com/{{1}}"
}
]
}
Vytvořte jednu MessageTemplateImage
, jednu MessageTemplateText
a jednu proměnnou MessageTemplateQuickAction
. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony. Pořadí je také důležité při definování tlačítek vazeb.
string templateName = "sample_purchase_feedback";
string templateLanguage = "en_us";
var imageUrl = new Uri("https://aka.ms/acsicon1");
var image = new MessageTemplateImage(name: "image", uri: imageUrl);
var product = new MessageTemplateText(name: "product", text: "coffee");
var urlSuffix = new MessageTemplateQuickAction(name: "text") { Text = "survey-code" };
WhatsAppMessageTemplateBindings bindings = new();
bindings.Header.Add(new(image.Name));
bindings.Body.Add(new(product.Name));
bindings.Buttons.Add(new(WhatsAppMessageButtonSubType.Url.ToString(), urlSuffix.Name));
MessageTemplate purchaseFeedbackTemplate = new("sample_purchase_feedback", "en_us");
purchaseFeedbackTemplate.Values.Add(image);
purchaseFeedbackTemplate.Values.Add(product);
purchaseFeedbackTemplate.Values.Add(urlSuffix);
purchaseFeedbackTemplate.Bindings = bindings;
Odeslat zprávu šablony s tlačítky akcí s voláním na tlačítka akcí se statickým odkazem
U statických odkazů nemusíte zahrnout MessageTemplateQuickAction
model, protože šablona WhatsApp obsahuje statický CallToAction
odkaz bez nutnosti vstupu od uživatele.
Tlačítka definice šablony:
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Take Survey",
"url": "https://www.example.com/{{1}}"
}
]
}
Příklad
purchase_feedback_static
šablona:
Tato ukázková šablona přidá tlačítko se statickým odkazem na adresu URL zprávy. Používá také obrázek v záhlaví a textový parametr v těle.
V této ukázce vyžaduje hlavička šablony obrázek:
{
"type": "HEADER",
"format": "IMAGE"
},
Text šablony vyžaduje jeden textový parametr:
{
"type": "BODY",
"text": "Hello {{1}}, \nHope you are great day!.\n Please click on given link to explore about our program.."
},
Šablona obsahuje tlačítko dynamické adresy URL s jedním parametrem:
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Take Survey",
"url": "https://www.example.com/"
}
]
}
Vytvořit jeden MessageTemplateImage
, jeden MessageTemplateText
. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony. Pořadí je také důležité při definování tlačítek vazeb.
// Send sample template sample_template
string templateNameWithcta = "purchase_feedback_static";
var bodyParam1 = new MessageTemplateText(name: "customer", text: "Joe");
var image = new MessageTemplateImage("image", new Uri("https://aka.ms/acsicon1"));
WhatsAppMessageTemplateBindings cta_bindings = new();
cta_bindings.Body.Add(new(bodyParam1.Name));
cta_bindings.Header.Add(new(image.Name));
var messageTemplateWithcta = new MessageTemplate(templateNameWithcta, templateLanguage);
messageTemplateWithcta.Values.Add(bodyParam1);
messageTemplateWithcta.Values.Add(image);
messageTemplateWithcta.Bindings = cta_bindings;
TemplateNotificationContent templateContent4 =
new TemplateNotificationContent(channelRegistrationId, recipientList, messageTemplateWithcta);
Response<SendMessageResult> sendTemplateMessageResult4 =
notificationMessagesClient.Send(templateContent4);
Spuštění kódu
Sestavte a spusťte program.
Pokud chcete uživateli WhatsApp poslat textovou nebo mediální zprávu, musí existovat aktivní konverzace mezi účtem WhatsApp Business a uživatelem WhatsApp.
Pokud nemáte aktivní konverzaci, můžete pro účely tohoto příkladu přidat čekání mezi odesláním zprávy šablony a odesláním textové zprávy. Toto přidané zpoždění vám poskytne dostatek času na odpověď na firmu na účtu WhatsApp uživatele. Pro referenci se v uvedeném příkladu před odesláním další zprávy zobrazí výzva k ručnímu zadání uživatele. Další informace najdete v úplném příkladu ukázkového kódu. V případě úspěchu obdržíte tři zprávy na účtu WhatsApp uživatele.
Sestavte a spusťte program.
dotnet build
dotnet run
Příklad úplného kódu
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using Azure;
using Azure.Communication.Messages;
using Azure.Communication.Messages.Models.Channels;
namespace SendTemplateMessages
{
class Program
{
public static async Task Main(string[] args)
{
Console.WriteLine("Azure Communication Services - Send WhatsApp Template Messages\n");
string connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
NotificationMessagesClient notificationMessagesClient = new NotificationMessagesClient(connectionString);
var channelRegistrationId = new Guid("<Your Channel ID>");
var recipientList = new List<string> { "<Recipient's WhatsApp Phone Number>" };
// List out available templates for a channel ID
MessageTemplateClient messageTemplateClient = new MessageTemplateClient(connectionString);
Pageable<MessageTemplateItem> templates = messageTemplateClient.GetTemplates(channelRegistrationId);
foreach (WhatsAppMessageTemplateItem template in templates)
{
Console.WriteLine("Name: {0}\tLanguage: {1}\tStatus: {2}\tContent: {3}\n",
template.Name, template.Language, template.Status, template.Content);
}
// Send Sample Template sample_template
MessageTemplate sampleTemplate = AssembleSampleTemplate();
var sampleTemplateContent = new TemplateNotificationContent(channelRegistrationId, recipientList, sampleTemplate);
var result = await notificationMessagesClient.SendAsync(sampleTemplateContent);
PrintResponse(result);
// Send sample template sample_shipping_confirmation
MessageTemplate shippingConfirmationTemplate = AssembleSampleShippingConfirmation();
var shippingConfirmationTemplateContent = new TemplateNotificationContent(channelRegistrationId, recipientList, shippingConfirmationTemplate);
result = await notificationMessagesClient.SendAsync(shippingConfirmationTemplateContent);
PrintResponse(result);
// Send sample template sample_movie_ticket_confirmation
MessageTemplate movieTicketConfirmationTemplate = AssembleSampleMovieTicketConfirmation();
var movieTicketConfirmationTemplateContent = new TemplateNotificationContent(channelRegistrationId, recipientList, movieTicketConfirmationTemplate);
result = await notificationMessagesClient.SendAsync(movieTicketConfirmationTemplateContent);
PrintResponse(result);
// Send sample template sample_happy_hour_announcement
MessageTemplate happyHourTemplate = AssembleSampleHappyHourAnnouncement();
var happyHourTemplateContent = new TemplateNotificationContent(channelRegistrationId, recipientList, happyHourTemplate);
result = await notificationMessagesClient.SendAsync(happyHourTemplateContent);
PrintResponse(result);
// Send sample template sample_flight_confirmation
MessageTemplate flightConfirmationTemplate = AssembleSampleFlightConfirmation();
var flightConfirmationTemplateContent = new TemplateNotificationContent(channelRegistrationId, recipientList, flightConfirmationTemplate);
result = await notificationMessagesClient.SendAsync(flightConfirmationTemplateContent);
PrintResponse(result);
// Send sample template sample_issue_resolution
MessageTemplate issueResolutionTemplate = AssembleSampleIssueResolution();
var issueResolutionTemplateContent = new TemplateNotificationContent(channelRegistrationId, recipientList, issueResolutionTemplate);
result = await notificationMessagesClient.SendAsync(issueResolutionTemplateContent);
PrintResponse(result);
// Send sample template sample_purchase_feedback
MessageTemplate purchaseFeedbackTemplate = AssembleSamplePurchaseFeedback();
var purchaseFeedbackTemplateContent = new TemplateNotificationContent(channelRegistrationId, recipientList, purchaseFeedbackTemplate);
result = await notificationMessagesClient.SendAsync(purchaseFeedbackTemplateContent);
PrintResponse(result);
Console.WriteLine("Press any key to exit.");
Console.ReadKey(true);
}
public static MessageTemplate AssembleSampleTemplate()
{
string templateName = "sample_template";
string templateLanguage = "en_us";
return new MessageTemplate(templateName, templateLanguage);
}
public static MessageTemplate AssembleSampleShippingConfirmation()
{
string templateName = "sample_shipping_confirmation";
string templateLanguage = "en_us";
var threeDays = new MessageTemplateText("threeDays", "3");
WhatsAppMessageTemplateBindings bindings = new();
bindings.Body.Add(new(threeDays.Name));
MessageTemplate shippingConfirmationTemplate = new(templateName, templateLanguage);
shippingConfirmationTemplate.Bindings = bindings;
shippingConfirmationTemplate.Values.Add(threeDays);
return shippingConfirmationTemplate;
}
public static MessageTemplate AssembleSampleMovieTicketConfirmation()
{
string templateName = "sample_movie_ticket_confirmation";
string templateLanguage = "en_us";
var imageUrl = new Uri("https://aka.ms/acsicon1");
var image = new MessageTemplateImage("image", imageUrl);
var title = new MessageTemplateText("title", "Contoso");
var time = new MessageTemplateText("time", "July 1st, 2023 12:30PM");
var venue = new MessageTemplateText("venue", "Southridge Video");
var seats = new MessageTemplateText("seats", "Seat 1A");
WhatsAppMessageTemplateBindings bindings = new();
bindings.Header.Add(new(image.Name));
bindings.Body.Add(new(title.Name));
bindings.Body.Add(new(time.Name));
bindings.Body.Add(new(venue.Name));
bindings.Body.Add(new(seats.Name));
MessageTemplate movieTicketConfirmationTemplate = new(templateName, templateLanguage);
movieTicketConfirmationTemplate.Values.Add(image);
movieTicketConfirmationTemplate.Values.Add(title);
movieTicketConfirmationTemplate.Values.Add(time);
movieTicketConfirmationTemplate.Values.Add(venue);
movieTicketConfirmationTemplate.Values.Add(seats);
movieTicketConfirmationTemplate.Bindings = bindings;
return movieTicketConfirmationTemplate;
}
public static MessageTemplate AssembleSampleHappyHourAnnouncement()
{
string templateName = "sample_happy_hour_announcement";
string templateLanguage = "en_us";
var videoUrl = new Uri("< Your .mp4 Video URL >");
var video = new MessageTemplateVideo("video", videoUrl);
var venue = new MessageTemplateText("venue", "Fourth Coffee");
var time = new MessageTemplateText("time", "Today 2-4PM");
WhatsAppMessageTemplateBindings bindings = new();
bindings.Header.Add(new(video.Name));
bindings.Body.Add(new(venue.Name));
bindings.Body.Add(new(time.Name));
MessageTemplate happyHourAnnouncementTemplate = new(templateName, templateLanguage);
happyHourAnnouncementTemplate.Values.Add(venue);
happyHourAnnouncementTemplate.Values.Add(time);
happyHourAnnouncementTemplate.Values.Add(video);
happyHourAnnouncementTemplate.Bindings = bindings;
return happyHourAnnouncementTemplate;
}
public static MessageTemplate AssembleSampleFlightConfirmation()
{
string templateName = "sample_flight_confirmation";
string templateLanguage = "en_us";
var documentUrl = new Uri("< Your .pdf document URL >");
var document = new MessageTemplateDocument("document", documentUrl);
var firstName = new MessageTemplateText("firstName", "Kat");
var lastName = new MessageTemplateText("lastName", "Larssen");
var date = new MessageTemplateText("date", "July 1st, 2023");
WhatsAppMessageTemplateBindings bindings = new();
bindings.Header.Add(new(document.Name));
bindings.Body.Add(new(firstName.Name));
bindings.Body.Add(new(lastName.Name));
bindings.Body.Add(new(date.Name));
MessageTemplate flightConfirmationTemplate = new(templateName, templateLanguage);
flightConfirmationTemplate.Values.Add(document);
flightConfirmationTemplate.Values.Add(firstName);
flightConfirmationTemplate.Values.Add(lastName);
flightConfirmationTemplate.Values.Add(date);
flightConfirmationTemplate.Bindings = bindings;
return flightConfirmationTemplate;
}
public static MessageTemplate AssembleSampleIssueResolution()
{
string templateName = "sample_issue_resolution";
string templateLanguage = "en_us";
var name = new MessageTemplateText(name: "name", text: "Kat");
var yes = new MessageTemplateQuickAction(name: "Yes"){ Payload = "Kat said yes" };
var no = new MessageTemplateQuickAction(name: "No") { Payload = "Kat said no" };
WhatsAppMessageTemplateBindings bindings = new();
bindings.Body.Add(new(name.Name));
bindings.Buttons.Add(new(WhatsAppMessageButtonSubType.QuickReply.ToString(), yes.Name));
bindings.Buttons.Add(new(WhatsAppMessageButtonSubType.QuickReply.ToString(), no.Name));
MessageTemplate issueResolutionTemplate = new(templateName, templateLanguage);
issueResolutionTemplate.Values.Add(name);
issueResolutionTemplate.Values.Add(yes);
issueResolutionTemplate.Values.Add(no);
issueResolutionTemplate.Bindings = bindings;
return issueResolutionTemplate;
}
public static MessageTemplate AssembleSamplePurchaseFeedback()
{
string templateName = "sample_purchase_feedback";
string templateLanguage = "en_us";
var imageUrl = new Uri("https://aka.ms/acsicon1");
var image = new MessageTemplateImage(name: "image", uri: imageUrl);
var product = new MessageTemplateText(name: "product", text: "coffee");
var urlSuffix = new MessageTemplateQuickAction(name: "text") { Text = "survey-code"};
WhatsAppMessageTemplateBindings bindings = new();
bindings.Header.Add(new(image.Name));
bindings.Body.Add(new(product.Name));
bindings.Buttons.Add(new(WhatsAppMessageButtonSubType.Url.ToString(), urlSuffix.Name));
MessageTemplate purchaseFeedbackTemplate = new(templateName, templateLanguage);
purchaseFeedbackTemplate.Values.Add(image);
purchaseFeedbackTemplate.Values.Add(product);
purchaseFeedbackTemplate.Values.Add(urlSuffix);
purchaseFeedbackTemplate.Bindings = bindings;
return purchaseFeedbackTemplate;
}
public static void PrintResponse(Response<SendMessageResult> response)
{
Console.WriteLine($"Response: {response.GetRawResponse().Status} " +
$"({response.GetRawResponse().ReasonPhrase})");
Console.WriteLine($"Date: " +
$"{response.GetRawResponse().Headers.First(header => header.Name == "Date").Value}");
Console.WriteLine($"ClientRequestId: {response.GetRawResponse().ClientRequestId}");
Console.WriteLine($"MS-CV: " +
$"{response.GetRawResponse().Headers.First(header => header.Name == "MS-CV").Value}");
foreach (var receipts in response.Value.Receipts)
{
Console.WriteLine($"MessageId: {receipts.MessageId}");
}
Console.WriteLine($"\n");
}
}
}
Další příklady
Tyto příklady používají ukázkové šablony, které jsou k dispozici pro účty WhatsApp Business vytvořené prostřednictvím vložené registrace na webu Azure Portal.
Použití ukázkové šablony sample_happy_hour_announcement
Tato ukázková šablona používá video v záhlaví a dva textové parametry v těle.
Záhlaví šablony vyžaduje video:
{
"type": "HEADER",
"format": "VIDEO"
},
Video musí být adresa URL hostovaného videa mp4.
Další informace o podporovaných typech médií a omezení velikosti najdete v dokumentaci aplikace WhatsApp k médiím zpráv.
Text šablony vyžaduje dva textové parametry:
{
"type": "BODY",
"text": "Happy hour is here! 🍺😀🍸\nPlease be merry and enjoy the day. 🎉\nVenue: {{1}}\nTime: {{2}}"
},
Vytvořte jednu MessageTemplateVideo
a dvě MessageTemplateText
proměnné. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony.
string templateName = "sample_happy_hour_announcement";
string templateLanguage = "en_us";
var videoUrl = new Uri("< Your .mp4 Video URL >");
var video = new MessageTemplateVideo("video", videoUrl);
var venue = new MessageTemplateText("venue", "Fourth Coffee");
var time = new MessageTemplateText("time", "Today 2-4PM");
WhatsAppMessageTemplateBindings bindings = new();
bindings.Header.Add(new(video.Name));
bindings.Body.Add(new(venue.Name));
bindings.Body.Add(new(time.Name));
MessageTemplate happyHourAnnouncementTemplate = new(templateName, templateLanguage);
happyHourAnnouncementTemplate.Values.Add(venue);
happyHourAnnouncementTemplate.Values.Add(time);
happyHourAnnouncementTemplate.Values.Add(video);
happyHourAnnouncementTemplate.Bindings = bindings;
Použití ukázkové šablony sample_flight_confirmation
Tato ukázková šablona používá dokument v záhlaví a tři textové parametry v textu.
Hlavička šablony vyžaduje dokument:
{
"type": "HEADER",
"format": "DOCUMENT"
},
Dokument musí být adresa URL hostovaného dokumentu PDF.
Další informace o podporovaných typech médií a omezení velikosti najdete v dokumentaci aplikace WhatsApp k médiím zpráv.
Text šablony vyžaduje tři textové parametry:
{
"type": "BODY",
"text": "This is your flight confirmation for {{1}}-{{2}} on {{3}}."
},
Vytvořte jednu MessageTemplateDocument
a tři MessageTemplateText
proměnné. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony.
string templateName = "sample_flight_confirmation";
string templateLanguage = "en_us";
var documentUrl = new Uri("< Your .pdf document URL >");
var document = new MessageTemplateDocument("document", documentUrl);
var firstName = new MessageTemplateText("firstName", "Kat");
var lastName = new MessageTemplateText("lastName", "Larssen");
var date = new MessageTemplateText("date", "July 1st, 2023");
WhatsAppMessageTemplateBindings bindings = new();
bindings.Header.Add(new(document.Name));
bindings.Body.Add(new(firstName.Name));
bindings.Body.Add(new(lastName.Name));
bindings.Body.Add(new(date.Name));
MessageTemplate flightConfirmationTemplate = new(templateName, templateLanguage);
flightConfirmationTemplate.Values.Add(document);
flightConfirmationTemplate.Values.Add(firstName);
flightConfirmationTemplate.Values.Add(lastName);
flightConfirmationTemplate.Values.Add(date);
flightConfirmationTemplate.Bindings = bindings;
Požadavky
- Zaregistrujte účet WhatsApp Business ve svém prostředku Azure Communication Services.
- Vytvořte zprávu šablony WhatsApp.
- Aktivní telefonní číslo Aplikace WhatsApp pro příjem zpráv.
Objektový model
Následující třídy a rozhraní zpracovávají některé z hlavních funkcí sady AZURE Communication Services Messages SDK pro Javu.
Název třídy | Popis |
---|---|
NotificationMessagesClient |
Připojí se k prostředku Azure Communication Services. Odesílá zprávy. |
MessageTemplate |
Definuje, kterou šablonu použijete, a obsah vlastností šablony pro vaši zprávu. |
TemplateNotificationContent |
Definuje "kdo" a "co" zprávy šablony, kterou chcete odeslat. |
Poznámka:
Další informace najdete v referenčních informacích k sadě Azure SDK pro Javu na webu com.azure.communication.messages Package.
Podporované typy šablon WhatsApp
Typ šablony | Popis |
---|---|
Textové šablony zpráv | Šablony zpráv WhatsApp jsou specifické formáty zpráv s parametry nebo bez parametrů. |
Šablony zpráv založené na médiích | Šablony zpráv WhatsApp s parametry médií pro součásti záhlaví. |
Interaktivní šablony zpráv | Interaktivní šablony zpráv rozšiřují obsah, který můžete příjemcům posílat, včetně interaktivních tlačítek pomocí objektu komponent. Podporují se jak volání k akci, tak rychlá odpověď. |
Šablony zpráv založené na poloze | Šablony zpráv WhatsApp s parametry umístění v zeměpisná délka a zeměpisná šířka pro součásti záhlaví. |
Běžná konfigurace
Podle těchto kroků přidejte potřebné fragmenty kódu do hlavní funkce souboru App.java
.
- Vytvořte a spravujte zprávu šablony WhatsApp.
- Ověřte klienta.
- Nastavte ID registrace kanálu.
- Nastavte seznam příjemců.
Vytvoření a správa zprávy šablony WhatsApp
Šablony zpráv WhatsApp jsou specifické formáty zpráv, které firmy používají k odesílání oznámení nebo zpráv péče o zákazníky lidem, kteří se přihlásili k oznámením. Zprávy můžou zahrnovat připomenutí událostí, dodací informace, řešení problému nebo aktualizace plateb. Než začnete používat sadu SDK pro pokročilé zasílání zpráv k odesílání šablonovaných zpráv, musí uživatel vytvořit požadované šablony na platformě WhatsApp Business Platform.
Další informace o požadavcích Na WhatsApp pro šablony najdete v referenčních informacích k rozhraní API whatsApp Business Platform:
- Vytváření a správa šablon
- Zobrazit součásti šablony.
- Odeslat zprávy šablony
- Firmy musí také dodržovat požadavky na výslovný souhlas před odesíláním zpráv uživatelům Aplikace WhatsApp.
Zahájení odesílání zpráv mezi firmou a uživatelem WhatsApp
Konverzace mezi účtem WhatsApp Business a uživatelem WhatsApp je možné zahájit jedním ze dvou způsobů:
- Firma odešle uživateli WhatsApp zprávu šablony.
- Uživatel WhatsApp odešle jakoukoli zprávu na firemní číslo.
Bez ohledu na to, jak byla konverzace spuštěna, může firma odesílat zprávy šablony jenom do doby, než uživatel odešle zprávu do firmy. Až po odeslání zprávy uživateli do firmy může firma během aktivní konverzace odesílat textové nebo mediální zprávy. Jakmile vyprší platnost 24hodinového okna konverzace, musí se konverzace znovu zahájit. Další informace o konverzacích najdete v definici aplikace WhatsApp Business Platform.
Ověření klienta
Pro ověření klienta zprávy je k dispozici několik různých možností:
Pokud chcete ověřit klienta, vytvořte instanci NotificationMessagesClient
instance nebo MessageTemplateClient
pomocí připojovací řetězec. Klienta můžete také inicializovat pomocí libovolného vlastního klienta HTTP, který implementuje com.azure.core.http.HttpClient
rozhraní.
Pro zjednodušení tento rychlý start používá k ověření připojovací řetězec. V produkčních prostředích doporučujeme používat instanční objekty.
Získejte připojovací řetězec z prostředku Azure Communication Services na webu Azure Portal. Vlevo přejděte na Keys
kartu. Zkopírujte Connection string
pole pro Primary key
pole . Připojovací řetězec je ve formátu endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}
.
Nastavte proměnnou COMMUNICATION_SERVICES_CONNECTION_STRING
prostředí na hodnotu připojovací řetězec.
Otevřete okno konzoly a zadejte následující příkaz:
setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"
Další informace o tom, jak nastavit proměnnou prostředí pro váš systém, najdete v postupu při ukládání připojovací řetězec do proměnné prostředí.
Pokud chcete vytvořit instanci NotificationMessagesClient, přidejte do main
metody následující kód:
// You can get your connection string from your resource in the Azure portal.
String connectionString = System.getenv("COMMUNICATION_SERVICES_CONNECTION_STRING");
NotificationMessagesClient notificationClient = new NotificationMessagesClientBuilder()
.connectionString(connectionString)
.buildClient();
Nastavení ID registrace kanálu
Identifikátor GUID ID registrace kanálu byl vytvořen během registrace kanálu. Můžete ho vyhledat na portálu na kartě Kanály vašeho prostředku Azure Communication Services.
Přiřaďte ji k proměnné s názvem channelRegistrationId.
String channelRegistrationId = "<your channel registration id GUID>";
Nastavení seznamu příjemců
Musíte zadat skutečné telefonní číslo, které má přidružený účet WhatsApp. Tento účet WhatsApp obdrží textové a mediální zprávy odeslané v tomto rychlém startu. Pro účely tohoto rychlého startu může být toto telefonní číslo vaše osobní telefonní číslo.
Telefonní číslo příjemce nemůže být firemní telefonní číslo (ID odesílatele) přidružené k registraci kanálu WhatsApp. ID odesílatele se zobrazí jako odesílatel textu a mediálních zpráv odeslaných příjemci.
Telefonní číslo by mělo obsahovat kód země. Další informace o formátování telefonních čísel naleznete v dokumentaci WhatsApp pro formáty telefonních čísel.
Poznámka:
V seznamu příjemců se aktuálně podporuje jenom jedno telefonní číslo.
Vytvořte seznam příjemců takto:
List<String> recipientList = new ArrayList<>();
recipientList.add("<to WhatsApp phone number>");
Příklad:
// Example only
List<String> recipientList = new ArrayList<>();
recipientList.add("+14255550199");
Nastavení prostředí
Pokud chcete nastavit prostředí pro odesílání zpráv, proveďte kroky v následujících částech.
Požadavek
- WhatsApp Business Account zaregistrovaný ve vašem prostředku Azure Communication Services
- Aktivní telefonní číslo Aplikace WhatsApp pro příjem zpráv.
- Java Development Kit (JDK) verze 8 nebo novější.
- Apache Maven
Vytvoření nové aplikace v Javě
Otevřete terminál nebo příkazové okno a přejděte do adresáře, do kterého chcete vytvořit aplikaci v Javě. Spuštěním následujícího příkazu vygenerujte projekt Java ze maven-archetype-quickstart
šablony.
mvn archetype:generate -DgroupId="com.communication.quickstart" -DartifactId="communication-quickstart" -DarchetypeArtifactId="maven-archetype-quickstart" -DarchetypeVersion="1.4" -DinteractiveMode="false"
Cíl generate
vytvoří adresář se stejným názvem jako artifactId
hodnota. V tomto adresáři src/main/java
adresář obsahuje zdrojový kód projektu, src/test/java
adresář obsahuje zdroj testů a pom.xml
soubor je projektový objektový model (POM).
Nainstalujte balíček .
Otevřete soubor v textovém pom.xml
editoru. Do skupiny závislostí přidejte následující prvek závislosti.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-messages</artifactId>
</dependency>
Nastavení architektury aplikace
Otevřete /src/main/java/com/communication/quickstart/App.java
v textovém editoru, přidejte direktivy importu a odeberte System.out.println("Hello world!");
příkaz:
package com.communication.quickstart;
import com.azure.communication.messages.*;
import com.azure.communication.messages.models.*;
import java.util.ArrayList;
import java.util.List;
public class App
{
public static void main( String[] args )
{
// Quickstart code goes here.
}
}
Příklady kódu
Podle těchto kroků přidejte požadované fragmenty kódu do hlavní funkce App.java
souboru.
- Seznam šablon WhatsApp na webu Azure Portal
- Odeslání zprávy šablony s textovými parametry v textu
- Odeslání zprávy šablony s parametrem média v hlavičce
- Odeslání zprávy šablony pomocí tlačítek pro rychlé odpovědi
- Odeslat zprávu šablony s tlačítky akcí a dynamickým odkazem
Výpis šablon WhatsApp na webu Azure Portal
Pokud chcete zobrazit šablony na webu Azure Portal, přejděte k prostředkům Azure Communication Services – Pokročilé šablony zasílání zpráv>.>
Výběrem šablony zobrazíte podrobnosti o šabloně.
Pole Obsah podrobností šablony může obsahovat vazby parametrů. Vazby parametrů lze oznamovat takto:
- Pole
"format"
s hodnotou, napříkladIMAGE
. - Dvojité závorky obklopují číslo, například
{{1}}
. Číslo, index zahájený na 1, označuje pořadí, ve kterém musí být zadány hodnoty vazby k vytvoření šablony zprávy.
Případně můžete zobrazit a upravit všechny šablony účtu WhatsApp Business v šablonách zpráv v nástrojích> účtu WhatsApp Manager.>
Pokud chcete zobrazit seznam šablon prostřednictvím kódu programu, můžete pomocí následujícího kódu načíst všechny šablony pro ID kanálu:
public static void getMessageTemplateWithConnectionString() {
MessageTemplateClient templateClient =
new MessageTemplateClientBuilder()
.connectionString(connectionString)
.buildClient();
PagedIterable<MessageTemplateItem> response = templateClient.listTemplates(channelRegistrationId);
response.stream().forEach(t -> {
WhatsAppMessageTemplateItem template = (WhatsAppMessageTemplateItem) t ;
System.out.println("===============================");
System.out.println("Template Name :: "+template.getName());
System.out.println("Template Language :: "+template.getLanguage());
System.out.println("Template Status :: "+template.getStatus());
System.out.println("Template Content :: "+template.getContent());
System.out.println("===============================");
});
}
Odeslání zprávy šablony s textovými parametry v textu
Pokud šablona nepřijímá žádné parametry, nemusíte při vytváření MessageTemplate
zadávat žádné hodnoty ani vazby .
/*
* This sample shows how to send template message with below details
* Name: sample_shipping_confirmation, Language: en_US
* [
{
"type": "BODY",
"text": "Your package has been shipped. It will be delivered in {{1}} business days."
},
{
"type": "FOOTER",
"text": "This message is from an unverified business."
}
]
* */
private static void sendTemplateMessage() {
//Update Template Name and language according your template associate to your channel.
MessageTemplate template = new MessageTemplate("sample_shipping_confirmation", "en_US");
//Update template parameter type and value
List<MessageTemplateValue> messageTemplateValues = new ArrayList<>();
messageTemplateValues.add(new MessageTemplateText("Days", "5"));
template.setValues(messageTemplateValues);
//Update template parameter binding
List<WhatsAppMessageTemplateBindingsComponent> components = new ArrayList<>();
components.add(new WhatsAppMessageTemplateBindingsComponent("Days"));
MessageTemplateBindings bindings =new WhatsAppMessageTemplateBindings()
.setBody(components);
template.setBindings(bindings);
NotificationMessagesClient client = createClientWithTokenCredential();
SendMessageResult result = client.send(
new TemplateNotificationContent(CHANNEL_ID, recipients, template));
result.getReceipts().forEach(r -> System.out.println("Message sent to:"+r.getTo() + " and message id:"+ r.getMessageId()));
}
Odeslání zprávy šablony s parametrem média v hlavičce
Použijte MessageTemplateImage
, MessageTemplateVideo
nebo MessageTemplateDocument
definujte parametr média v hlavičce.
Definice šablony s parametrem média obrázku v hlavičce:
{
"type": "HEADER",
"format": "VIDEO"
},
"format"
Můžou být na čtyřech různých typech médií podporovaných aplikací WhatsApp. V sadě .NET SDK každý typ média používá odpovídající MessageTemplateValue
typ.
Formát | MessageTemplateValue – typ | Typ souboru |
---|---|---|
IMAGE | MessageTemplateImage |
png, jpg |
VIDEO | MessageTemplateVideo |
mp4 |
DOKUMENT | MessageTemplateDocument |
Další informace o podporovaných typech médií a omezení velikosti najdete v dokumentaci aplikace WhatsApp k médiím zpráv.
Příklad
sample_happy_hour_announcement
šablona:
Záhlaví šablony vyžaduje video:
{
"type": "HEADER",
"format": "VIDEO"
},
Video musí být adresa URL hostovaného videa mp4.
Další informace o podporovaných typech médií a omezení velikosti najdete v dokumentaci aplikace WhatsApp k médiím zpráv.
Text šablony vyžaduje dva textové parametry:
{
"type": "BODY",
"text": "Happy hour is here! 🍺😀🍸\nPlease be merry and enjoy the day. 🎉\nVenue: {{1}}\nTime: {{2}}"
},
Vytvořte jednu MessageTemplateVideo
a čtyři MessageTemplateText
proměnné. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony.
/*
* This sample shows how to send template message with below details
* Name: sample_happy_hour_announcement, Language: en_US
* [
{
"type": "HEADER",
"format": "VIDEO"
},
{
"type": "BODY",
"text": "Happy hour is here! 🍺😀🍸\nPlease be merry and enjoy the day. 🎉\nVenue: {{1}}\nTime: {{2}}"
},
{
"type": "FOOTER",
"text": "This message is from an unverified business."
}
]
* */
private static void sendTemplateMessageWithVideo() {
//Update Template Name and language according your template associate to your channel.
MessageTemplate template = new MessageTemplate("sample_happy_hour_announcement", "en_US");
//Add template parameter type with value in a list
List<MessageTemplateValue> messageTemplateValues = new ArrayList<>();
messageTemplateValues.add(new MessageTemplateVideo("HeaderVideo", "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"));
messageTemplateValues.add(new MessageTemplateText("VenueInfoInBody", "Starbucks"));
messageTemplateValues.add(new MessageTemplateText("TimeInfoInBody", "Today 2-4PM"));
// Add parameter binding for template header in a list
List<WhatsAppMessageTemplateBindingsComponent> templateHeaderBindings = new ArrayList<>();
templateHeaderBindings.add(new WhatsAppMessageTemplateBindingsComponent("HeaderVideo"));
// Add parameter binding for template body in a list
List<WhatsAppMessageTemplateBindingsComponent> templateBodyBindings = new ArrayList<>();
templateBodyBindings.add(new WhatsAppMessageTemplateBindingsComponent("VenueInfoInBody"));
templateBodyBindings.add(new WhatsAppMessageTemplateBindingsComponent("TimeInfoInBody"));
MessageTemplateBindings templateBindings = new WhatsAppMessageTemplateBindings()
.setHeaderProperty(templateHeaderBindings) // Set the parameter binding for template header
.setBody(templateBodyBindings); // Set the parameter binding for template body
template
.setBindings(templateBindings)
.setValues(messageTemplateValues);
NotificationMessagesClient client = createClientWithConnectionString();
SendMessageResult result = client.send(
new TemplateNotificationContent(CHANNEL_ID, recipients, template));
result.getReceipts().forEach(r -> System.out.println("Message sent to:"+r.getTo() + " and message id:"+ r.getMessageId()));
}
Odeslání zprávy šablony pomocí tlačítek pro rychlé odpovědi
Slouží MessageTemplateQuickAction
k definování datové části pro tlačítka rychlých odpovědí a MessageTemplateQuickAction
objekty s následujícími třemi atributy.
Vlastnosti | Popis | Typ |
---|---|---|
Název | Použitý name k vyhledání hodnoty v MessageTemplateWhatsAppBindings . |
string |
Text | Rychlá akce možnosti text . |
string |
Datová část | Přiřazení payload k tlačítku dostupnému ve zprávě odpovědět, pokud uživatel tlačítko vybere. |
string |
Definice šablony s tlačítky pro rychlé odpovědi:
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Yes"
},
{
"type": "QUICK_REPLY",
"text": "No"
}
]
}
Pořadí zobrazení tlačítek v definici šablony musí odpovídat pořadí, ve kterém jsou tlačítka definována při vytváření vazeb pomocí MessageTemplateWhatsAppBindings
.
Další informace o datové části v odpovědích rychlých odpovědí od uživatele najdete v dokumentaci aplikace WhatsApp k přijetí zpětného volání z tlačítka Rychlá odpověď.
Příklad
sample_issue_resolution
šablona:
Text šablony vyžaduje jeden textový parametr:
/*
* This sample shows how to send template message with below details
* Name: sample_issue_resolution, Language: en_US
* [
{
"type": "BODY",
"text": "Hi {{1}}, were we able to solve the issue that you were facing?"
},
{
"type": "FOOTER",
"text": "This message is from an unverified business."
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Yes"
},
{
"type": "QUICK_REPLY",
"text": "No"
}
]
}
]
* */
private static void sendTextTemplateMessageWithQuickReply() {
//Add template parameter type with value in a list
List<MessageTemplateValue> messageTemplateValues = new ArrayList<>();
messageTemplateValues.add(new MessageTemplateText("Name", "Arif"));
messageTemplateValues.add(new MessageTemplateQuickAction("Yes").setPayload("Yes"));
messageTemplateValues.add(new MessageTemplateQuickAction("No").setPayload("No"));
// Add parameter binding for template body in a list
List<WhatsAppMessageTemplateBindingsComponent> templateBodyBindings = new ArrayList<>();
templateBodyBindings.add(new WhatsAppMessageTemplateBindingsComponent("Name"));
// Add parameter binding for template buttons in a list
List<WhatsAppMessageTemplateBindingsButton> templateButtonBindings = new ArrayList<>();
templateButtonBindings.add( new WhatsAppMessageTemplateBindingsButton(WhatsAppMessageButtonSubType.QUICK_REPLY, "Yes"));
templateButtonBindings.add( new WhatsAppMessageTemplateBindingsButton(WhatsAppMessageButtonSubType.QUICK_REPLY, "No"));
MessageTemplateBindings templateBindings = new WhatsAppMessageTemplateBindings()
.setBody(templateBodyBindings) // Set the parameter binding for template body
.setButtons(templateButtonBindings); // Set the parameter binding for template buttons
MessageTemplate messageTemplate = new MessageTemplate("sample_issue_resolution", "en_US")
.setBindings(templateBindings)
.setValues(messageTemplateValues);
NotificationMessagesClient client = createClientWithConnectionString();
SendMessageResult result = client.send(
new TemplateNotificationContent(CHANNEL_ID, recipients, messageTemplate));
result.getReceipts().forEach(r -> System.out.println("Message sent to:"+r.getTo() + " and message id:"+ r.getMessageId()));
}
Odeslání zprávy šablony s tlačítky akcí voláním a dynamickým odkazem
Slouží MessageTemplateQuickAction
k definování přípony ADRESY URL pro tlačítka akcí volání a MessageTemplateQuickAction
objektu mají následující dva atributy.
Vlastnosti | Popis | Typ |
---|---|---|
Název | Použitý name k vyhledání hodnoty v MessageTemplateWhatsAppBindings . |
string |
Text | Připojeno text k adrese URL. |
string |
Tlačítka definice šablony:
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Take Survey",
"url": "https://www.example.com/{{1}}"
}
]
}
Pořadí zobrazení tlačítek v definici šablony musí odpovídat pořadí, ve kterém jsou tlačítka definována při vytváření vazeb pomocí MessageTemplateWhatsAppBindings
.
Příklad
sample_purchase_feedback
šablona:
Tato ukázková šablona přidá do zprávy tlačítko s dynamickým odkazem na adresu URL. Používá také obrázek v záhlaví a textový parametr v těle.
V této ukázce vyžaduje hlavička šablony obrázek:
{
"type": "HEADER",
"format": "IMAGE"
},
Text šablony vyžaduje jeden textový parametr:
{
"type": "BODY",
"text": "Thank you for purchasing {{1}}! We value your feedback and would like to learn more about your experience."
},
Šablona obsahuje tlačítko dynamické adresy URL s jedním parametrem:
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Take Survey",
"url": "https://www.example.com/{{1}}"
}
]
}
Vytvořte jednu MessageTemplateImage
, jednu MessageTemplateText
a jednu proměnnou MessageTemplateQuickAction
. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony. Pořadí je také důležité při definování tlačítek vazeb.
/*
* This sample shows how to send template message with below details
* Name: sample_purchase_feedback, Language: en_US
* [
{
"type": "HEADER",
"format": "IMAGE"
},
{
"type": "BODY",
"text": "Thank you for purchasing {{1}}! We value your feedback and would like to learn more about your experience."
},
{
"type": "FOOTER",
"text": "This message is from an unverified business."
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Take Survey",
"url": "https://www.example.com/"
}
]
}
]
* */
private static void sendTemplateMessageWithImage() {
//Update Template Name and language according your template associate to your channel.
MessageTemplate template = new MessageTemplate("sample_purchase_feedback", "en_US");
//Add template parameter type with value in a list
List<MessageTemplateValue> messageTemplateValues = new ArrayList<>();
messageTemplateValues.add(new MessageTemplateImage("HeaderImage", "https://upload.wikimedia.org/wikipedia/commons/3/30/Building92microsoft.jpg"));
messageTemplateValues.add(new MessageTemplateText("ProductInfoInBody", "Microsoft Office"));
// Add parameter binding for template header in a list
List<WhatsAppMessageTemplateBindingsComponent> templateHeaderBindings = new ArrayList<>();
templateHeaderBindings.add(new WhatsAppMessageTemplateBindingsComponent("HeaderImage"));
// Add parameter binding for template body in a list
List<WhatsAppMessageTemplateBindingsComponent> templateBodyBindings = new ArrayList<>();
templateBodyBindings.add(new WhatsAppMessageTemplateBindingsComponent("ProductInfoInBody"));
MessageTemplateBindings templateBindings = new WhatsAppMessageTemplateBindings()
.setHeaderProperty(templateHeaderBindings) // Set the parameter binding for template header
.setBody(templateBodyBindings); // Set the parameter binding for template body
template
.setBindings(templateBindings)
.setValues(messageTemplateValues);
NotificationMessagesClient client = createClientWithConnectionString();
SendMessageResult result = client.send(
new TemplateNotificationContent(CHANNEL_ID, recipients, template));
result.getReceipts().forEach(r -> System.out.println("Message sent to:"+r.getTo() + " and message id:"+ r.getMessageId()));
}
Spuštění kódu
Pomocí příkazu otevřete adresář, který obsahuje
pom.xml
soubor, a zkompilujte projektmvn
.mvn compile
Spusťte aplikaci spuštěním následujícího
mvn
příkazu.mvn exec:java -D"exec.mainClass"="com.communication.quickstart.App" -D"exec.cleanupDaemonThreads"="false"
Celý ukázkový kód
Najděte finalizovaný kód pro tento rychlý start na GitHubu.
Požadavky
- Zaregistrujte účet WhatsApp Business ve svém prostředku Azure Communication Services.
- Vytvořte zprávu šablony WhatsApp.
- Aktivní telefonní číslo Aplikace WhatsApp pro příjem zpráv.
- Node.js verze ACTIVE LTS a maintenance LTS (doporučujeme verze 8.11.1 a 10.14.1).
-
Node.js se doporučuje verze LTS a údržba Active LTS (8.11.1 a 10.14.1)
- Spuštěním příkazu v terminálu nebo příkazovém okně zkontrolujte,
node --version
jestli je nainstalovaná Node.js.
- Spuštěním příkazu v terminálu nebo příkazovém okně zkontrolujte,
Objektový model
Následující třídy a rozhraní zpracovávají některé z hlavních funkcí sady SDK zpráv služby Azure Communication Services pro JavaScript.
Název třídy | Popis |
---|---|
NotificationMessagesClient |
Připojí se k prostředku Azure Communication Services. Odesílá zprávy. |
MessageTemplate |
Definuje, kterou šablonu použijete, a obsah vlastností šablony pro vaši zprávu. |
TemplateNotificationContent |
Definuje "kdo" a "co" zprávy šablony, kterou chcete odeslat. |
Poznámka:
Další informace najdete v referenčních informacích k sadě Azure SDK pro JavaScript @azure-rest/communication-messages balíček
Podporované typy šablon WhatsApp
Typ šablony | Popis |
---|---|
Textové šablony zpráv | Šablony zpráv WhatsApp jsou specifické formáty zpráv s parametry nebo bez parametrů. |
Šablony zpráv založené na médiích | Šablony zpráv WhatsApp s parametry médií pro součásti záhlaví. |
Interaktivní šablony zpráv | Interaktivní šablony zpráv rozšiřují obsah, který můžete příjemcům posílat, včetně interaktivních tlačítek pomocí objektu komponent. Podporují se jak volání k akci, tak rychlá odpověď. |
Šablony zpráv založené na poloze | Šablony zpráv WhatsApp s parametry umístění v zeměpisná délka a zeměpisná šířka pro součásti záhlaví. |
Běžná konfigurace
Podle těchto kroků přidejte potřebné fragmenty kódu do hlavní funkce souboru send-messages.js
.
- Vytvořte a spravujte zprávu šablony WhatsApp.
- Ověřte klienta.
- Nastavte ID registrace kanálu.
- Nastavte seznam příjemců.
Vytvoření a správa zprávy šablony WhatsApp
Šablony zpráv WhatsApp jsou specifické formáty zpráv, které firmy používají k odesílání oznámení nebo zpráv péče o zákazníky lidem, kteří se přihlásili k oznámením. Zprávy můžou zahrnovat připomenutí událostí, dodací informace, řešení problému nebo aktualizace plateb. Než začnete používat sadu SDK pro pokročilé zasílání zpráv k odesílání šablonovaných zpráv, musí uživatel vytvořit požadované šablony na platformě WhatsApp Business Platform.
Další informace o požadavcích Na WhatsApp pro šablony najdete v referenčních informacích k rozhraní API whatsApp Business Platform:
- Vytváření a správa šablon
- Zobrazit součásti šablony.
- Odeslat zprávy šablony
- Firmy musí také dodržovat požadavky na výslovný souhlas před odesíláním zpráv uživatelům Aplikace WhatsApp.
Zahájení odesílání zpráv mezi firmou a uživatelem WhatsApp
Konverzace mezi účtem WhatsApp Business a uživatelem WhatsApp je možné zahájit jedním ze dvou způsobů:
- Firma odešle uživateli WhatsApp zprávu šablony.
- Uživatel WhatsApp odešle jakoukoli zprávu na firemní číslo.
Bez ohledu na to, jak byla konverzace spuštěna, může firma odesílat zprávy šablony jenom do doby, než uživatel odešle zprávu do firmy. Až po odeslání zprávy uživateli do firmy může firma během aktivní konverzace odesílat textové nebo mediální zprávy. Jakmile vyprší platnost 24hodinového okna konverzace, musí se konverzace znovu zahájit. Další informace o konverzacích najdete v definici aplikace WhatsApp Business Platform.
Ověření klienta
Následující kód načte připojovací řetězec prostředku z proměnné prostředí pojmenované COMMUNICATION_SERVICES_CONNECTION_STRING
pomocí balíčku dotenv.
Pro zjednodušení tento rychlý start používá k ověření připojovací řetězec. V produkčních prostředích doporučujeme používat instanční objekty.
Získejte připojovací řetězec z prostředku Azure Communication Services na webu Azure Portal. Vlevo přejděte na Keys
kartu. Zkopírujte Connection string
pole pro Primary key
pole . Připojovací řetězec je ve formátu endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}
.
Nastavte proměnnou COMMUNICATION_SERVICES_CONNECTION_STRING
prostředí na hodnotu připojovací řetězec.
Otevřete okno konzoly a zadejte následující příkaz:
setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"
Další informace o tom, jak nastavit proměnnou prostředí pro váš systém, najdete v postupu při ukládání připojovací řetězec do proměnné prostředí.
Pokud chcete vytvořit instanci NotificationClient, přidejte do Main
metody následující kód:
const NotificationClient = require("@azure-rest/communication-messages").default;
// Set Connection string
const connectionString = process.env["COMMUNICATION_SERVICES_CONNECTION_STRING"];
// Instantiate the client
const client = NotificationClient(connectionString);
Nastavení ID registrace kanálu
Identifikátor GUID ID registrace kanálu byl vytvořen během registrace kanálu. Můžete ho vyhledat na portálu na kartě Kanály vašeho prostředku Azure Communication Services.
Přiřaďte ji k proměnné s názvem channelRegistrationId.
const channelRegistrationId = "<your channel registration id GUID>";
Nastavení seznamu příjemců
Musíte zadat skutečné telefonní číslo, které má přidružený účet WhatsApp. Tento účet WhatsApp obdrží šablonu, text a mediální zprávy odeslané v tomto rychlém startu. Pro účely tohoto rychlého startu může být toto telefonní číslo vaše osobní telefonní číslo.
Telefonní číslo příjemce nemůže být firemní telefonní číslo (ID odesílatele) přidružené k registraci kanálu WhatsApp. ID odesílatele se zobrazí jako odesílatel textu a mediálních zpráv odeslaných příjemci.
Telefonní číslo by mělo obsahovat kód země. Další informace o formátování telefonních čísel naleznete v dokumentaci WhatsApp pro formáty telefonních čísel.
Poznámka:
V seznamu příjemců se aktuálně podporuje jenom jedno telefonní číslo.
Vytvořte seznam příjemců takto:
const recipientList = ["<to WhatsApp phone number>"];
Příklad:
// Example only
const recipientList = ["+14255550199"];
Nastavení
Pokud chcete nastavit prostředí pro odesílání zpráv, proveďte kroky v následujících částech.
Vytvoření nové aplikace Node.js
Vytvořte pro aplikaci nový adresář a otevřete ho v terminálu nebo příkazovém okně.
Spusťte následující příkaz:
mkdir advance-messages-quickstart && cd advance-messages-quickstart
Spuštěním následujícího příkazu vytvořte
package.json
soubor s výchozím nastavením.npm init -y
Pomocí textového editoru vytvořte soubor volaný
send-messages.js
v kořenovém adresáři projektu.Do souboru
send-messages.js
přidejte následující fragment kódu .async function main() { // Quickstart code goes here. } main().catch((error) => { console.error("Encountered an error while sending message: ", error); process.exit(1); });
V následující části přidejte zdrojový kód pro tento příklad do send-messages.js
souboru, který jste vytvořili.
Nainstalujte balíček .
npm install
Pomocí příkazu nainstalujte sadu AZURE Communication Services Advance Messaging SDK pro JavaScript.
npm install @azure-rest/communication-messages --save
Tato --save
možnost vypíše knihovnu jako závislost v souboru package.json .
Příklady kódu
Podle těchto kroků přidejte požadované fragmenty kódu do hlavní funkce send-messages.js
souboru.
Výpis šablon WhatsApp na webu Azure Portal
Pokud chcete zobrazit šablony na webu Azure Portal, přejděte k prostředkům Azure Communication Services – Pokročilé šablony zasílání zpráv>.>
Výběrem šablony zobrazíte podrobnosti o šabloně.
Pole Obsah podrobností šablony může obsahovat vazby parametrů. Vazby parametrů lze oznamovat takto:
- Pole
"format"
s hodnotou, napříkladIMAGE
. - Dvojité závorky obklopují číslo, například
{{1}}
. Číslo, index zahájený na 1, označuje pořadí, ve kterém musí být zadány hodnoty vazby k vytvoření šablony zprávy.
Případně můžete zobrazit a upravit všechny šablony účtu WhatsApp Business v šablonách zpráv v nástrojích> účtu WhatsApp Manager.>
Pokud chcete zobrazit seznam šablon prostřednictvím kódu programu, můžete pomocí následujícího kódu načíst všechny šablony pro ID kanálu:
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
/**
* @summary Get Template list for a channel
*/
const MessageTemplateClient = require("@azure-rest/communication-messages").default,
{ isUnexpected } = require("@azure-rest/communication-messages");
// Load the .env file if it exists
require("dotenv").config();
async function main() {
const connectionString = process.env.COMMUNICATION_LIVETEST_STATIC_CONNECTION_STRING || "";
const client = MessageTemplateClient(connectionString);
console.log("Fetch Templates...");
const response = await client
.path("/messages/channels/{channelId}/templates", process.env.CHANNEl_ID || "")
.get({
queryParameters: { maxPageSize: 2 },
});
if (isUnexpected(response)) {
throw new Error("Failed to get template for the channel.");
}
// The paginate helper creates a paged async iterator using metadata from the first page.
const items = paginate(client, response);
// We get an PageableAsyncIterator so we need to do `for await`.
for await (const item of items) {
console.log(JSON.stringify(item, null, 2));
}
}
main().catch((error) => {
console.error("Encountered an error while sending message: ", error);
throw error;
});
Odeslání zprávy šablony s textovými parametry v textu
sample_shipping_confirmation
šablona:
V této ukázce má tělo šablony jeden parametr:
{
"type": "BODY",
"text": "Your package has been shipped. It will be delivered in {{1}} business days."
},
Parametry jsou definovány s values
hodnotami a bindings
vazbami. K sestavení objektu template
použijte hodnoty a vazby.
/*
* This sample shows how to send template message with below details
* Name: sample_shipping_confirmation, Language: en_US
* [
{
"type": "BODY",
"text": "Your package has been shipped. It will be delivered in {{1}} business days."
},
{
"type": "FOOTER",
"text": "This message is from an unverified business."
}
]
* */
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
/**
* @summary Use AAD token credentials when sending a whatsapp template message.
*/
const { isNode } = require("@azure/core-util");
const { ClientSecretCredential, DefaultAzureCredential } = require("@azure/identity");
const NotificationClient = require("@azure-rest/communication-messages").default,
{ isUnexpected } = require("@azure-rest/communication-messages");
// Load the .env file if it exists
require("dotenv").config();
async function main() {
// You will need to set this environment variable or edit the following values
const endpoint = process.env.ACS_URL || "";
// Azure AD Credential information is required to run this sample:
if (
!process.env.AZURE_TENANT_ID ||
!process.env.AZURE_CLIENT_ID ||
!process.env.AZURE_CLIENT_SECRET
) {
console.error(
"Azure AD authentication information not provided, but it is required to run this sample. Exiting.",
);
return;
}
// get credentials
const credential = isNode
? new DefaultAzureCredential()
: new ClientSecretCredential(
process.env.AZURE_TENANT_ID,
process.env.AZURE_CLIENT_ID,
process.env.AZURE_CLIENT_SECRET,
);
const client = NotificationClient(endpoint, credential);
const DaysTemplateValue = {
kind: "text",
name: "Days",
text: "5",
};
const templateBindings = {
kind: "whatsApp",
body: [
{
refValue: "Days",
},
],
};
const template = {
name: "sample_shipping_confirmation",
language: "en_US",
bindings: templateBindings,
values: [DaysTemplateValue],
};
const result = await client.path("/messages/notifications:send").post({
contentType: "application/json",
body: {
channelRegistrationId: process.env.CHANNEL_ID || "",
to: [process.env.RECIPIENT_PHONE_NUMBER || ""],
kind: "template",
template: template,
},
});
console.log("Response: " + JSON.stringify(result, null, 2));
if (isUnexpected(result)) {
throw new Error("Failed to send message");
}
const response = result;
response.body.receipts.forEach((receipt) => {
console.log("Message sent to:" + receipt.to + " with message id:" + receipt.messageId);
});
}
main().catch((error) => {
console.error("Encountered an error while sending message: ", error);
throw error;
});
module.exports = { main };
Spuštění kódu
Pomocí příkazu node spusťte kód, který jste přidali do souboru send-messages.js.
node ./send-messages.js
Celý ukázkový kód
Najděte finalizovaný kód pro tuto ukázku na GitHubu.
Požadavky
- Zaregistrujte účet WhatsApp Business ve svém prostředku Azure Communication Services.
- Vytvořte zprávu šablony WhatsApp.
- Aktivní telefonní číslo Aplikace WhatsApp pro příjem zpráv.
Objektový model
Následující třídy a rozhraní zpracovávají některé z hlavních funkcí sady AZURE Communication Services Messages SDK pro Python.
Název třídy | Popis |
---|---|
NotificationMessagesClient |
Připojí se k prostředku Azure Communication Services. Odesílá zprávy. |
MessageTemplate |
Definuje, kterou šablonu použijete, a obsah vlastností šablony pro vaši zprávu. |
TemplateNotificationContent |
Definuje "kdo" a "co" zprávy šablony, kterou chcete odeslat. |
Poznámka:
Další informace najdete v tématu Balíček referenčních zpráv sady Azure SDK pro Python.
Podporované typy šablon WhatsApp
Typ šablony | Popis |
---|---|
Textové šablony zpráv | Šablony zpráv WhatsApp jsou specifické formáty zpráv s parametry nebo bez parametrů. |
Šablony zpráv založené na médiích | Šablony zpráv WhatsApp s parametry médií pro součásti záhlaví. |
Interaktivní šablony zpráv | Interaktivní šablony zpráv rozšiřují obsah, který můžete příjemcům posílat, včetně interaktivních tlačítek pomocí objektu komponent. Podporují se jak volání k akci, tak rychlá odpověď. |
Šablony zpráv založené na poloze | Šablony zpráv WhatsApp s parametry umístění v zeměpisná délka a zeměpisná šířka pro součásti záhlaví. |
Běžná konfigurace
Podle těchto kroků přidejte do programu Python potřebné fragmenty messages-quickstart.py
kódu.
- Vytvořte a spravujte zprávu šablony WhatsApp.
- Ověřte klienta.
- Nastavte ID registrace kanálu.
- Nastavte seznam příjemců.
Vytvoření a správa zprávy šablony WhatsApp
Šablony zpráv WhatsApp jsou specifické formáty zpráv, které firmy používají k odesílání oznámení nebo zpráv péče o zákazníky lidem, kteří se přihlásili k oznámením. Zprávy můžou zahrnovat připomenutí událostí, dodací informace, řešení problému nebo aktualizace plateb. Než začnete používat sadu SDK pro pokročilé zasílání zpráv k odesílání šablonovaných zpráv, musí uživatel vytvořit požadované šablony na platformě WhatsApp Business Platform.
Další informace o požadavcích Na WhatsApp pro šablony najdete v referenčních informacích k rozhraní API whatsApp Business Platform:
- Vytváření a správa šablon
- Zobrazit součásti šablony.
- Odeslat zprávy šablony
- Firmy musí také dodržovat požadavky na výslovný souhlas před odesíláním zpráv uživatelům Aplikace WhatsApp.
Ověření klienta
Odesílání zpráv se provádí pomocí NotificationMessagesClient. NotificationMessagesClient se ověřuje pomocí vašeho připojovací řetězec získaného z prostředku Azure Communication Services na webu Azure Portal. Další informace o připojovací řetězec najdete v tématu access-your-connection-strings-and-service-endpoints.
Získejte připojovací řetězec prostředku komunikace Azure z webu Azure Portal, jak je znázorněno na snímku obrazovky. Vlevo přejděte na Keys
kartu. Zkopírujte Connection string
pole pro primární klíč. Připojovací řetězec je ve formátu endpoint=https://{your Azure Communication Services resource name}.communication.azure.com/;accesskey={secret key}
.
Nastavte proměnnou COMMUNICATION_SERVICES_CONNECTION_STRING
prostředí na hodnotu připojovací řetězec.
Otevřete okno konzoly a zadejte následující příkaz:
setx COMMUNICATION_SERVICES_CONNECTION_STRING "<your connection string>"
Po přidání proměnné prostředí možná budete muset restartovat všechny spuštěné programy, které budou muset přečíst proměnnou prostředí, včetně okna konzoly. Pokud například jako editor používáte Sadu Visual Studio, restartujte sadu Visual Studio před spuštěním příkladu.
Další informace o tom, jak nastavit proměnnou prostředí pro váš systém, najdete v postupu při ukládání připojovací řetězec do proměnné prostředí.
# Get a connection string to our Azure Communication Services resource.
connection_string = os.getenv("COMMUNICATION_SERVICES_CONNECTION_STRING")
def send_template_message(self):
from azure.communication.messages import NotificationMessagesClient
# Create NotificationMessagesClient Client
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
Nastavení ID registrace kanálu
Během registrace kanálu jste vytvořili identifikátor GUID ID registrace kanálu. Najdete ho na portálu na kartě Kanály vašeho prostředku Azure Communication Services.
Přiřaďte ji k proměnné s názvem channelRegistrationId.
channelRegistrationId = os.getenv("WHATSAPP_CHANNEL_ID_GUID")
Nastavení seznamu příjemců
Musíte zadat aktivní telefonní číslo přidružené k účtu WhatsApp. Tento účet WhatsApp obdrží šablonu, text a mediální zprávy odeslané v tomto rychlém startu.
V tomto příkladu můžete použít svoje osobní telefonní číslo.
Telefonní číslo příjemce nemůže být firemní telefonní číslo (ID odesílatele) přidružené k registraci kanálu WhatsApp. ID odesílatele se zobrazí jako odesílatel textu a mediálních zpráv odeslaných příjemci.
Telefonní číslo musí obsahovat kód země. Další informace o formátování telefonních čísel naleznete v dokumentaci WhatsApp pro formáty telefonních čísel.
Poznámka:
V seznamu příjemců se aktuálně podporuje jenom jedno telefonní číslo.
Nastavte seznam příjemců takto:
phone_number = os.getenv("RECIPIENT_WHATSAPP_PHONE_NUMBER")
Příklad použití:
# Example only
to=[self.phone_number],
Zahájení odesílání zpráv mezi firmou a uživatelem WhatsApp
Konverzace mezi účtem WhatsApp Business a uživatelem WhatsApp je možné zahájit jedním ze dvou způsobů:
- Firma odešle uživateli WhatsApp zprávu šablony.
- Uživatel WhatsApp odešle jakoukoli zprávu na firemní číslo.
Firma nemůže zahájit interaktivní konverzaci. Firma může odeslat interaktivní zprávu jenom po přijetí zprávy od uživatele. Firma může uživateli posílat jenom interaktivní zprávy během aktivní konverzace. Jakmile vyprší platnost 24hodinového okna konverzace, může interaktivní konverzaci restartovat jenom uživatel. Další informace o konverzacích najdete v definici aplikace WhatsApp Business Platform.
Pokud chcete zahájit interaktivní konverzaci z vašeho osobního účtu WhatsApp, pošlete zprávu na vaše firemní číslo (ID odesílatele).
Nastavení prostředí
Vytvoření nové aplikace v Pythonu
V okně terminálu nebo konzoly vytvořte pro aplikaci novou složku a otevřete ji.
mkdir messages-quickstart && cd messages-quickstart
Nainstalujte balíček .
Použijte klientskou knihovnu Azure Communication Messages pro Python 1.1.0 nebo novější.
Z příkazového řádku konzoly spusťte následující příkaz:
pip install azure-communication-messages
Pro InteractiveMessages, Reakce a nálepky použijte následující beta verzi:
pip install azure-communication-messages==1.2.0b1
Nastavení architektury aplikace
Vytvořte volaný messages-quickstart.py
nový soubor a přidejte základní strukturu programu.
type nul > messages-quickstart.py
Základní struktura programu
import os
class MessagesQuickstart(object):
print("Azure Communication Services - Advanced Messages SDK Quickstart")
if __name__ == '__main__':
messages = MessagesQuickstart()
Základní struktura programu
import os
class MessagesQuickstart(object):
print("Azure Communication Services - Advanced Messages SDK Quickstart")
if __name__ == '__main__':
messages = MessagesQuickstart()
Příklady kódu
Podle těchto kroků přidejte do programu Python potřebné fragmenty messages-quickstart.py
kódu.
- Seznam šablon WhatsApp na webu Azure Portal
- Odeslat zprávu šablony bez parametrů
- Odeslat zprávu šablony s textovými parametry v textu
- Odeslat zprávu šablony s parametrem média v záhlaví.
- Odeslat zprávu šablony s umístěním v záhlaví
- Odeslání zprávy šablony pomocí tlačítek pro rychlé odpovědi
- Odeslat zprávu šablony s tlačítky akcí s dynamickým odkazem
Výpis šablon WhatsApp na webu Azure Portal
Šablony můžete zobrazit na webu Azure Portal tak, že přejdete na pokročilé šablony zasílání zpráv>prostředků >služby Azure Communication Service.
Výběrem šablony zobrazíte podrobnosti šablony.
Pole content
podrobností šablony může obsahovat vazby parametrů. Vazby parametrů lze oznamovat takto:
- Pole
format
s hodnotou, napříkladIMAGE
. - Dvojité závorky obklopují číslo, například
{{1}}
. Číslo, index zahájený na 1, označuje pořadí, ve kterém musí být zadány hodnoty vazby k vytvoření šablony zprávy.
Případně můžete zobrazit a upravit všechny šablony vašeho účtu WhatsApp Business v nástrojích> Pro účty WhatsApp Manageru> Šablony zpráv.
Pokud chcete zobrazit seznam šablon prostřednictvím kódu programu, můžete načíst všechny šablony pro ID kanálu následujícím způsobem:
def get_templates_list(self):
from azure.communication.messages import MessageTemplateClient
message_template_client = MessageTemplateClient.from_connection_string(self.connection_string)
# calling send() with whatsapp message details
template_list = message_template_client.list_templates(self.channel_id)
count_templates = len(list(template_list))
print("Successfully retrieved {} templates from channel_id {}.".format(count_templates, self.channel_id))
Odeslání zprávy šablony bez parametrů
Pokud šablona nevyžaduje parametry, nemusíte při vytváření zadávat MessageTemplate
hodnoty ani vazby.
Příklad
Nemá sample_template
parametry.
MessageTemplate
Sestavte odkazování na název a jazyk cílové šablony.
input_template: MessageTemplate = MessageTemplate(name="gathering_invitation", language="ca") # Name of the WhatsApp Template
Odeslání zprávy šablony s textovými parametry v textu
Slouží MessageTemplateText
k definování parametrů v těle označeném dvojitými hranatými závorkami kolem čísla, například {{1}}
. Číslo, index zahájený na 1, označuje pořadí, ve kterém musí být zadány hodnoty vazby k vytvoření šablony zprávy. Pokus o zahrnutí parametrů, které nejsou v šabloně, je neplatný.
Definice šablony se dvěma parametry:
{
"type": "BODY",
"text": "Message with two parameters: {{1}} and {{2}}"
}
Příklady
sample_shipping_confirmation
šablona:
V této ukázce má tělo šablony jeden parametr:
{
"type": "BODY",
"text": "Your package has been shipped. It will be delivered in {{1}} business days."
},
Definujte parametry pomocí MessageTemplateValue
hodnot a MessageTemplateWhatsAppBindings
vazeb. K sestavení MessageTemplate
použijte hodnoty a vazby .
# Setting template options
templateName = "sample_shipping_confirmation"
templateLanguage = "en_us"
shippingConfirmationTemplate: MessageTemplate = MessageTemplate(name=templateName, language=templateLanguage )
threeDays = MessageTemplateText(name="threeDays", text="3")
bindings = WhatsAppMessageTemplateBindings(body=[WhatsAppMessageTemplateBindingsComponent(ref_value=threeDays.name)])
shippingConfirmationTemplate.bindings = bindings
shippingConfirmationTemplate.template_values=[threeDays]
template_options = TemplateNotificationContent(
channel_registration_id=self.channel_id, to=[self.phone_number], template=shippingConfirmationTemplate
)
Odeslání zprávy šablony s parametrem média v hlavičce
Použijte MessageTemplateImage
, MessageTemplateVideo
nebo MessageTemplateDocument
definujte parametr média v hlavičce.
Definice šablony s parametrem média obrázku v hlavičce:
{
"type": "HEADER",
"format": "IMAGE"
},
Aplikace format
WhatsApp podporuje různé typy médií. V sadě .NET SDK každý typ média používá odpovídající MessageTemplateValue
typ.
Formát | MessageTemplateValue – typ | Typ souboru |
---|---|---|
IMAGE | MessageTemplateImage |
png, jpg |
VIDEO | MessageTemplateVideo |
mp4 |
DOKUMENT | MessageTemplateDocument |
Další informace o podporovaných typech médií a omezení velikosti najdete v dokumentaci aplikace WhatsApp k médiím zpráv.
Příklady
sample_movie_ticket_confirmation
šablona:
V této ukázce vyžaduje hlavička šablony obrázek:
{
"type": "HEADER",
"format": "IMAGE"
},
Text šablony vyžaduje čtyři textové parametry:
{
"type": "BODY",
"text": "Your ticket for *{{1}}*\n*Time* - {{2}}\n*Venue* - {{3}}\n*Seats* - {{4}}"
},
Vytvořte jednu MessageTemplateImage
a čtyři MessageTemplateText
proměnné. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony.
# Setting template options
templateName = "sample_movie_ticket_confirmation"
templateLanguage = "en_us"
imageUrl = "https://aka.ms/acsicon1"
sample_movie_ticket_confirmation: MessageTemplate = MessageTemplate(name=templateName, language=templateLanguage )
image = MessageTemplateImage(name="image", url=imageUrl)
title = MessageTemplateText(name="title", text="Contoso")
time = MessageTemplateText(name="time", text="July 1st, 2023 12:30PM")
venue = MessageTemplateText(name="venue", text="Southridge Video")
seats = MessageTemplateText(name="seats", text="Seat 1A")
bindings = WhatsAppMessageTemplateBindings(header=[WhatsAppMessageTemplateBindingsComponent(ref_value=image.name)],
body=[WhatsAppMessageTemplateBindingsComponent(ref_value=title.name),
WhatsAppMessageTemplateBindingsComponent(ref_value=time.name),
WhatsAppMessageTemplateBindingsComponent(ref_value=venue.name),
WhatsAppMessageTemplateBindingsComponent(ref_value=seats.name)])
sample_movie_ticket_confirmation.bindings = bindings
sample_movie_ticket_confirmation.template_values=[image,title,time,venue,seats]
template_options = TemplateNotificationContent(
channel_registration_id=self.channel_id, to=[self.phone_number], template=sample_movie_ticket_confirmation)
Odeslání zprávy šablony pomocí tlačítek pro rychlé odpovědi
Slouží MessageTemplateQuickAction
k definování datové části pro tlačítka rychlých odpovědí a MessageTemplateQuickAction
objekty s následujícími třemi atributy.
Vlastnosti | Popis | Typ |
---|---|---|
Název | Vyhledání name hodnoty v MessageTemplateWhatsAppBindings . |
string |
Text | Rychlá akce možnosti text . |
string |
Datová část | Přiřazení payload k tlačítku dostupnému ve zprávě odpovědět, pokud uživatel tlačítko vybere. |
string |
Definice šablony s tlačítky pro rychlé odpovědi:
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Yes"
},
{
"type": "QUICK_REPLY",
"text": "No"
}
]
}
Pořadí zobrazení tlačítek v definici šablony musí odpovídat pořadí, ve kterém jsou tlačítka definována při vytváření vazeb pomocí MessageTemplateWhatsAppBindings
.
Další informace o datové části v odpovědích rychlých odpovědí od uživatele najdete v dokumentaci aplikace WhatsApp k přijetí zpětného volání z tlačítka Rychlá odpověď.
Příklad
sample_issue_resolution
šablona:
Text šablony vyžaduje jeden textový parametr:
{
"type": "BODY",
"text": "Hi {{1}}, were we able to solve the issue that you were facing?"
},
Šablona obsahuje dvě předvyplněná tlačítka Yes
pro odpovědi a No
.
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Yes"
},
{
"type": "QUICK_REPLY",
"text": "No"
}
]
}
Vytvořte jednu MessageTemplateText
a dvě MessageTemplateQuickAction
proměnné. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony. Pořadí je také důležité při definování tlačítek vazeb.
# Setting template options
templateName = "sample_issue_resolution"
templateLanguage = "en_us"
shippingConfirmationTemplate: MessageTemplate = MessageTemplate(name=templateName, language=templateLanguage )
name = MessageTemplateText(name="first", text="Joe")
yes = MessageTemplateQuickAction(name="Yes", payload="Joe said yes")
no = MessageTemplateQuickAction(name="No", payload = "Joe said no")
bindings = WhatsAppMessageTemplateBindings(body=[WhatsAppMessageTemplateBindingsComponent(ref_value=name.name)])
bindings.buttons = [WhatsAppMessageTemplateBindingsButton(sub_type=WhatsAppMessageButtonSubType.QUICK_REPLY, ref_value=yes.name),
WhatsAppMessageTemplateBindingsButton(sub_type=WhatsAppMessageButtonSubType.QUICK_REPLY, ref_value=no.name)]
shippingConfirmationTemplate.bindings = bindings
shippingConfirmationTemplate.template_values=[name,yes,no]
template_options = TemplateNotificationContent(
channel_registration_id=self.channel_id, to=[self.phone_number], template=shippingConfirmationTemplate
)
Odeslání zprávy šablony s umístěním v záhlaví
Slouží MessageTemplateLocation
k definování parametru umístění v hlavičce.
Definice šablony pro součást záhlaví vyžadující umístění jako:
{
"type": "header",
"parameters": [
{
"type": "location",
"location": {
"latitude": "<LATITUDE>",
"longitude": "<LONGITUDE>",
"name": "<NAME>",
"address": "<ADDRESS>"
}
}
]
}
format
Můžou vyžadovat různé typy médií. V sadě .NET SDK každý typ média používá odpovídající MessageTemplateValue
typ.
Vlastnosti | Popis | Typ |
---|---|---|
ADDRESS |
Adresa, která se zobrazí za NAME hodnotou pod obecnou mapou v horní části zprávy. |
string |
LATITUDE |
Zeměpisná šířka umístění. | double |
LONGITUDE |
Zeměpisná délka umístění. | double |
LOCATIONNAME |
Text, který se zobrazí bezprostředně pod obecnou mapou v horní části zprávy | string |
Další informace o šablonách založených na poloze najdete v dokumentaci aplikace WhatsApp k médiím zpráv.
Příklad
sample_movie_location
šablona:
Sestavení šablony zprávy založené na umístění:
# Setting template options
templateName = "sample_movie_location"
templateLanguage = "en_us"
sample_movie_location: MessageTemplate = MessageTemplate(name=templateName, language=templateLanguage )
name = MessageTemplateText(name="first", text="Joe")
location = MessageTemplateLocation(name="location", location_name="Pablo Morales",
address="1 Hacker Way, Menlo Park, CA 94025",
latitude=37.483307,longitude=122.148981)
bindings = WhatsAppMessageTemplateBindings(body=[WhatsAppMessageTemplateBindingsComponent(ref_value=name.name)],
header=[WhatsAppMessageTemplateBindingsComponent(ref_value=location.name)])
sample_movie_location.bindings = bindings
sample_movie_location.template_values=[name,location]
template_options = TemplateNotificationContent(
channel_registration_id=self.channel_id, to=[self.phone_number], template=sample_movie_location)
Odeslání zprávy šablony s tlačítky akcí s dynamickým odkazem
Slouží MessageTemplateQuickAction
k definování přípony ADRESY URL pro tlačítka akcí volání a MessageTemplateQuickAction
objektu mají následující dva atributy.
Vlastnosti | Popis | Typ |
---|---|---|
Název | Použitý name k vyhledání hodnoty v MessageTemplateWhatsAppBindings . |
string |
Text | Připojeno text k adrese URL. |
string |
Tlačítka definice šablony:
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Take Survey",
"url": "https://www.example.com/{{1}}"
}
]
}
Pořadí zobrazení tlačítek v definici šablony musí odpovídat pořadí, ve kterém jsou tlačítka definována při vytváření vazeb pomocí MessageTemplateWhatsAppBindings
.
Příklad
sample_purchase_feedback
šablona:
Tato ukázková šablona přidá do zprávy tlačítko s dynamickým odkazem na adresu URL. Používá také obrázek v záhlaví a textový parametr v těle. Vytvořte šablony tlačítek akce s typem Dynamic
adresy URL pro View website
typ akce.
V této ukázce vyžaduje hlavička šablony obrázek:
{
"type": "HEADER",
"format": "IMAGE"
},
Text šablony vyžaduje jeden textový parametr:
{
"type": "BODY",
"text": "Thank you for purchasing {{1}}! We value your feedback and would like to learn more about your experience."
},
Šablona obsahuje tlačítko dynamické adresy URL s jedním parametrem:
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Take Survey",
"url": "https://www.example.com/{{1}}"
}
]
}
Vytvořte jednu MessageTemplateImage
, jednu MessageTemplateText
a jednu proměnnou MessageTemplateQuickAction
. Pak seznam sestavíte tak, že poskytnete MessageTemplateValue
MessageTemplateWhatsAppBindings
parametry v pořadí, v jakém se parametry zobrazí v obsahu šablony. Pořadí je také důležité při definování tlačítek vazeb.
# Setting template options
templateName = "sample_purchase_feedback"
templateLanguage = "en_us"
imageUrl = "https://aka.ms/acsicon1"
sample_purchase_feedback: MessageTemplate = MessageTemplate(name=templateName, language=templateLanguage )
name = MessageTemplateText(name="first", text="Joe")
image = MessageTemplateImage(name="image", url=imageUrl)
uri_to_click = MessageTemplateQuickAction(name="url", text="questions")
bindings = WhatsAppMessageTemplateBindings(body=[WhatsAppMessageTemplateBindingsComponent(ref_value=name.name)],
header=[WhatsAppMessageTemplateBindingsComponent(ref_value=image.name)],
buttons=[WhatsAppMessageTemplateBindingsButton(sub_type=WhatsAppMessageButtonSubType.URL,
ref_value=uri_to_click.name)])
sample_purchase_feedback.bindings = bindings
sample_purchase_feedback.template_values=[name, image, uri_to_click]
template_options = TemplateNotificationContent(
channel_registration_id=self.channel_id, to=[self.phone_number], template=sample_purchase_feedback)
Úplný příklad
import os
import sys
sys.path.append("..")
class SendWhatsAppTemplateMessageSample(object):
connection_string = os.getenv("COMMUNICATION_SAMPLES_CONNECTION_STRING")
phone_number = os.getenv("RECIPIENT_PHONE_NUMBER")
channel_id = os.getenv("WHATSAPP_CHANNEL_ID")
def send_template_message_without_parameters(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import ( TemplateNotificationContent , MessageTemplate )
# client creation
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
input_template: MessageTemplate = MessageTemplate(
name="<<TEMPLATE_NAME>>",
language="<<LANGUAGE>>")
template_options = TemplateNotificationContent(
channel_registration_id=self.channelRegistrationId,
to=[self.phone_number],
template=input_template
)
# calling send() with WhatsApp template details.
message_responses = messaging_client.send(template_options)
response = message_responses.receipts[0]
if (response is not None):
print("WhatsApp Templated Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
else:
print("Message failed to send")
def send_template_message_with_parameters(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import (TemplateNotificationContent, MessageTemplate,
MessageTemplateText, WhatsAppMessageTemplateBindings, WhatsAppMessageTemplateBindingsComponent)
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
# Setting template options
templateName = "sample_shipping_confirmation"
templateLanguage = "en_us"
shippingConfirmationTemplate: MessageTemplate = MessageTemplate(name=templateName, language=templateLanguage )
threeDays = MessageTemplateText(name="threeDays", text="3")
bindings = WhatsAppMessageTemplateBindings(body=[WhatsAppMessageTemplateBindingsComponent(ref_value=threeDays.name)])
shippingConfirmationTemplate.bindings = bindings
shippingConfirmationTemplate.template_values=[threeDays]
template_options = TemplateNotificationContent(
channel_registration_id=self.channel_id, to=[self.phone_number], template=shippingConfirmationTemplate
)
# calling send() with whatsapp message details
message_responses = messaging_client.send(template_options)
response = message_responses.receipts[0]
print("WhatsApp text parameters Templated Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
def send_template_message_with_media(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import (TemplateNotificationContent, MessageTemplate,
MessageTemplateText, WhatsAppMessageTemplateBindings, WhatsAppMessageTemplateBindingsComponent,
MessageTemplateImage)
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
# Setting template options
templateName = "sample_movie_ticket_confirmation"
templateLanguage = "en_us"
imageUrl = "https://aka.ms/acsicon1"
sample_movie_ticket_confirmation: MessageTemplate = MessageTemplate(name=templateName, language=templateLanguage )
image = MessageTemplateImage(name="image", url=imageUrl)
title = MessageTemplateText(name="title", text="Contoso")
time = MessageTemplateText(name="time", text="July 1st, 2023 12:30PM")
venue = MessageTemplateText(name="venue", text="Southridge Video")
seats = MessageTemplateText(name="seats", text="Seat 1A")
bindings = WhatsAppMessageTemplateBindings(header=[WhatsAppMessageTemplateBindingsComponent(ref_value=image.name)],
body=[WhatsAppMessageTemplateBindingsComponent(ref_value=title.name),
WhatsAppMessageTemplateBindingsComponent(ref_value=time.name),
WhatsAppMessageTemplateBindingsComponent(ref_value=venue.name),
WhatsAppMessageTemplateBindingsComponent(ref_value=seats.name)])
sample_movie_ticket_confirmation.bindings = bindings
sample_movie_ticket_confirmation.template_values=[image,title,time,venue,seats]
template_options = TemplateNotificationContent(
channel_registration_id=self.channel_id, to=[self.phone_number], template=sample_movie_ticket_confirmation)
# calling send() with whatsapp message details
message_responses = messaging_client.send(template_options)
response = message_responses.receipts[0]
print("WhatsApp media parameters in templated message header with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
def send_template_message_with_buttons(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import (TemplateNotificationContent, MessageTemplate,
MessageTemplateText, WhatsAppMessageTemplateBindings, WhatsAppMessageTemplateBindingsComponent,
MessageTemplateQuickAction, WhatsAppMessageTemplateBindingsButton, WhatsAppMessageButtonSubType)
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
# Setting template options
templateName = "sample_issue_resolution"
templateLanguage = "en_us"
shippingConfirmationTemplate: MessageTemplate = MessageTemplate(name=templateName, language=templateLanguage )
name = MessageTemplateText(name="first", text="Joe")
yes = MessageTemplateQuickAction(name="Yes", payload="Joe said yes")
no = MessageTemplateQuickAction(name="No", payload = "Joe said no")
bindings = WhatsAppMessageTemplateBindings(body=[WhatsAppMessageTemplateBindingsComponent(ref_value=name.name)])
bindings.buttons = [WhatsAppMessageTemplateBindingsButton(sub_type=WhatsAppMessageButtonSubType.QUICK_REPLY, ref_value=yes.name),
WhatsAppMessageTemplateBindingsButton(sub_type=WhatsAppMessageButtonSubType.QUICK_REPLY, ref_value=no.name)]
shippingConfirmationTemplate.bindings = bindings
shippingConfirmationTemplate.template_values=[name,yes,no]
template_options = TemplateNotificationContent(
channel_registration_id=self.channel_id, to=[self.phone_number], template=shippingConfirmationTemplate
)
# calling send() with whatsapp message details
message_responses = messaging_client.send(template_options)
response = message_responses.receipts[0]
print("WhatsApp Quick Button Templated Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
def send_template_message_with_location(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import (TemplateNotificationContent, MessageTemplate,
MessageTemplateText, WhatsAppMessageTemplateBindings, WhatsAppMessageTemplateBindingsComponent,
MessageTemplateLocation)
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
# Setting template options
templateName = "sample_movie_location"
templateLanguage = "en_us"
sample_movie_location: MessageTemplate = MessageTemplate(name=templateName, language=templateLanguage )
name = MessageTemplateText(name="first", text="Joe")
location = MessageTemplateLocation(name="location", location_name="Pablo Morales",
address="1 Hacker Way, Menlo Park, CA 94025",
latitude=37.483307,longitude=122.148981)
bindings = WhatsAppMessageTemplateBindings(body=[WhatsAppMessageTemplateBindingsComponent(ref_value=name.name)],
header=[WhatsAppMessageTemplateBindingsComponent(ref_value=location.name)])
sample_movie_location.bindings = bindings
sample_movie_location.template_values=[name,location]
template_options = TemplateNotificationContent(
channel_registration_id=self.channel_id, to=[self.phone_number], template=sample_movie_location)
# calling send() with whatsapp message details
message_responses = messaging_client.send(template_options)
response = message_responses.receipts[0]
print("WhatsApp Location Templated Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
def send_template_message_with_call_to_action(self):
from azure.communication.messages import NotificationMessagesClient
from azure.communication.messages.models import (TemplateNotificationContent, MessageTemplate,
MessageTemplateText, WhatsAppMessageTemplateBindings, WhatsAppMessageTemplateBindingsComponent,
MessageTemplateQuickAction, MessageTemplateImage, WhatsAppMessageTemplateBindingsButton,
WhatsAppMessageButtonSubType)
messaging_client = NotificationMessagesClient.from_connection_string(self.connection_string)
# Setting template options
templateName = "sample_purchase_feedback"
templateLanguage = "en_us"
imageUrl = "https://aka.ms/acsicon1"
sample_purchase_feedback: MessageTemplate = MessageTemplate(name=templateName, language=templateLanguage )
name = MessageTemplateText(name="first", text="Joe")
image = MessageTemplateImage(name="image", url=imageUrl)
uri_to_click = MessageTemplateQuickAction(name="url", text="questions")
bindings = WhatsAppMessageTemplateBindings(body=[WhatsAppMessageTemplateBindingsComponent(ref_value=name.name)],
header=[WhatsAppMessageTemplateBindingsComponent(ref_value=image.name)],
buttons=[WhatsAppMessageTemplateBindingsButton(sub_type=WhatsAppMessageButtonSubType.URL,
ref_value=uri_to_click.name)])
sample_purchase_feedback.bindings = bindings
sample_purchase_feedback.template_values=[name, image, uri_to_click]
template_options = TemplateNotificationContent(
channel_registration_id=self.channel_id, to=[self.phone_number], template=sample_purchase_feedback)
# calling send() with whatsapp message details
message_responses = messaging_client.send(template_options)
response = message_responses.receipts[0]
print("WhatsApp Call To Action Templated Message with message id {} was successfully sent to {}"
.format(response.message_id, response.to))
if __name__ == "__main__":
sample = SendWhatsAppTemplateMessageSample()
sample.send_template_message_without_parameters()
sample.send_template_message_with_parameters()
sample.send_template_message_with_buttons()
sample.send_template_message_with_location()
sample.send_template_message_with_call_to_action()
Spuštění kódu
Pokud chcete kód spustit, ujistěte se, že jste v adresáři, kde je váš messages-quickstart.py
soubor.
python messages-quickstart.py
Azure Communication Services - Advanced Messages Quickstart
WhatsApp Templated Message with message id <<GUID>> was successfully sent to <<ToRecipient>>