Senden von kürzeren Links per SMS mit Azure Communication Services
SMS-Nachrichten sind auf 160 Zeichen beschränkt, wodurch die Möglichkeit zum Senden von URLs an Kunden eingeschränkt ist. URLs können den Grenzwert von 160 Zeichen überschreiten, da sie Abfrageparameter, verschlüsselte Informationen usw. enthalten. Mit der Azure-URL-Verkürzung können Sie kurze URLs generieren, die zum Senden per SMS geeignet sind, da sie deutlich weniger als 160 Zeichen umfassen.
In diesem Dokument wird der Prozess der Integration von Azure Communication Services mit der Azure-URL-Verkürzung beschrieben, einem Open Source-Dienst, mit dem Sie ganz einfach verkürzte Links erstellen, verwalten und überwachen können.
Den vollständigen Code für dieses Tutorial finden Sie auf GitHub.
- Ein aktives Azure-Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine aktive Azure Communication Services-Ressource Ausführlichere Informationen hierzu finden Sie unter Schnellstart: Erstellen und Verwalten einer Communication Services-Ressource.
- Eine Azure Communication Services-Telefonnummer Beziehen Sie eine Telefonnummer. Sie müssen Ihre Telefonnummer überprüfen, damit Nachrichten mit URLs gesendet werden können.
- Bereitgestellte AzUrlShortener Klicken Sie auf die Schaltfläche In Azure bereitstellen für eine schnelle Bereitstellung.
- [Optional] Stellen Sie die Admin Web-App bereit, um Links in der Benutzeroberfläche zu verwalten und zu überwachen.
- In diesem Tutorial werden SMS-Anforderungen an eine Azure-Funktion weitergeleitet. Sie können immer auch einen vorhandenen Dienst, ein anderes Framework wie Express verwenden oder das Tutorial einfach als C#-Konsolen-App ausführen. Informationen zum Ausführen dieses Tutorials mit einer Azure-Funktion finden Sie in den Einrichtungsanweisungen Azure-Funktion für C#.
In diesem Tutorial liegt der Fokus auf der Einrichtung einer Middleware, die Anforderungen zum Senden von SMS und die Verkürzung von URLs über den Azure-URL-Verkürzungsdienst orchestriert. Sie interagiert mit Azure Communication Services, um den Versand der SMS abzuschließen.
Für den Einstieg müssen Sie eine neue Azure-Funktion erstellen. Sie können die Azure-Funktion erstellen, indem Sie die Schritte in der Azure Functions-Dokumentation ausführen. Wenn Sie keine Azure-Funktion sondern stattdessen ein anderes Framework verwenden, überspringen Sie diesen Schritt, und fahren Sie mit dem nächsten Abschnitt fort.
Sobald die Azure-Funktion eingerichtet ist, wechseln Sie zur Datei „local.settings.json
“, und fügen Sie drei weitere Werte hinzu, die Sie speichern müssen: die Azure Communication Services-Verbindungszeichenfolge, die Telefonnummer (z. B. +15555555555) und den URL-Verkürzungsendpunkt (z. B. https://<Azure_Function_URL>/api/UrlCreate
). Diese Variablen sind alle Werte, die Sie aus den Voraussetzungen am Anfang des Dokuments generiert haben.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"ACS_CONNECTIONSTRING": "<AZURE COMMUNICATION SERVICES CONNECTION STRING>",
"ACS_PHONE_NUMBER": "<AZURE COMMUNICATION SERVICES PHONE NUMBER>",
"URL_SHORTENER": "<URL SHORTENER ENDPOINT>"
}
}
Nachdem Sie die Azure-Funktion erstellt haben, müssen Sie die Abfrageparameter konfigurieren, die zum Auslösen erforderlich sind. Die Funktion erwartet eine Telefonnummer und eine URL. Die Telefonnummer wird als Empfänger der SMS-Nachricht verwendet. Die URL ist der Link, der gekürzt und an den Empfänger gesendet wird.
namespace Company.Function
{
public static class SendSMSUrlShortener
{
[FunctionName("SendSMSUrlShortener")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string phoneNumberTo = req.Query["phoneNumber"]; // get phone number query parameter
string urlToShorten = req.Query["url"]; // get url to shorten query parameter
return new OkObjectResult(null);
}
}
}
Nachdem Sie nun über die Telefonnummer und die URL verfügen, können Sie den Azure-URL-Verkürzungsdienst verwenden, um die URL zu kürzen. Stellen Sie sicher, dass Sie diesen Dienst bereits bereitgestellt haben. Der Dienst enthält mehrere Endpunkte, aber in diesem Tutorial liegt der Fokus auf dem Endpunkt „UrlCreate
“. Verwenden Sie die Methode „PostAsync
“, um eine POST
-Anforderung an den Azure-URL-Verkürzungsdienst mit der URL zu stellen, die Sie kürzen möchten. Der Dienst gibt ein JSON-Objekt mit der verkürzten URL zurück. Speichern Sie die verkürzte URL in einer Variablen namens „shortUrl
“. Fügen Sie im Ausschnitt den Endpunkt Ihres bereitgestellten Azure-URL-Verkürzungsdiensts ein. Informationen zum Abrufen des Endpunkts finden Sie unter Überprüfen der Bereitstellung.
...
using System.Net.Http;
using System.Text.Json;
using System.Text;
namespace Company.Function
{
public class ShortenedUrl
{
public string ShortUrl { get; set; }
}
public static class SendSMSUrlShortener
{
static string urlShortener = Environment.GetEnvironmentVariable("URL_SHORTENER", EnvironmentVariableTarget.Process);
[FunctionName("SendSMSUrlShortener")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
//Parse Query Parameters
string phoneNumberTo = req.Query["phoneNumber"]; // get phone number query parameter
string urlToShorten = req.Query["url"]; // get url to shorten query parameter
//Get short URL from Azure URL Shortener
using var client = new HttpClient();
var requestData = new
{
Url = urlToShorten //Body request for the POST call
};
var requestBody = JsonSerializer.Serialize(requestData);
var httpContent = new StringContent(requestBody, Encoding.UTF8, "application/json");
var response = await client.PostAsync(urlShortener, httpContent); // POST call to the Azure URL Shortener
var content = await response.Content.ReadAsStringAsync();
var data = System.Text.Json.JsonSerializer.Deserialize<ShortenedUrl>(content); // Parse content to ShortenedUrl object
var url = data.ShortUrl;
log.LogInformation("Shortened URL " + url);
return new OkObjectResult(null);
}
}
}
Nachdem die URL gekürzt wurde, können Sie Azure Communication Services verwenden, um die SMS zu senden. Verwenden Sie die Methode „send
“ aus der Klasse „SmsClient
“ des Pakets „Azure.Communication.Sms
“.
dotnet add package Azure.Communication.Sms
Diese Methode sendet die SMS an die Telefonnummer, die in den Abfrageparametern angegeben ist. Die SMS enthält die verkürzte URL. Weitere Informationen zum Senden von SMS finden Sie unter Senden von SMS.
...
using Azure;
using Azure.Communication;
using Azure.Communication.Sms;
namespace Company.Function
{
// Class to deserialize URL Shortener response
public class ShortenedUrl
{
public string ShortUrl { get; set; }
}
public static class SendSMSUrlShortener
{
[FunctionName("SendSMSUrlShortener")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
//Parse Query Parameters
string phoneNumberTo = req.Query["phoneNumber"]; // get phone number query parameter
string urlToShorten = req.Query["url"]; // get url to shorten query parameter
//Get short URL from Azure URL Shortener
using var client = new HttpClient();
var requestData = new
{
Url = urlToShorten //Body request for the POST call
};
var requestBody = JsonSerializer.Serialize(requestData);
var httpContent = new StringContent(requestBody, Encoding.UTF8, "application/json");
string urlShortener = Environment.GetEnvironmentVariable("URL_SHORTENER", EnvironmentVariableTarget.Process); // Ex. https://<Azure Function URL>/api/UrlCreate
var response = await client.PostAsync(urlShortener, httpContent); // POST call to the Azure URL Shortener
var content = await response.Content.ReadAsStringAsync();
var data = System.Text.Json.JsonSerializer.Deserialize<ShortenedUrl>(content); // Parse content to ShortenedUrl object
var url = data.ShortUrl;
log.LogInformation("Shortened URL " + url);
//Send SMS with Azure Communication Services
string connectionString = Environment.GetEnvironmentVariable("ACS_CONNECTIONSTRING", EnvironmentVariableTarget.Process);
string phoneNumberFrom = Environment.GetEnvironmentVariable("ACS_PHONE_NUMBER", EnvironmentVariableTarget.Process); // Ex. +15555555555
SmsClient smsClient = new SmsClient(connectionString);
SmsSendResult sendResult = smsClient.Send(
from: phoneNumberFrom,
to: phoneNumberTo,
message: "Here is your shortened URL: " + url
); // Send SMS message with shortened URL
return new OkObjectResult(sendResult);
}
}
}
Hinweis
Sie müssen Ihre Telefonnummer überprüfen, damit SMS-Nachrichten mit URLs gesendet werden können. Sobald Ihre Überprüfungsanwendungen auf den Status „Ausstehend (1-2 Tage)“ festgelegt sind, wird die Telefonnummer zum Senden von URLs aktiviert. Die vollständige Überprüfung dauert 5-6 Wochen. Weitere Informationen zur Überprüfung gebührenfreier Nummern finden Sie unter Häufig gestellte Fragen zur gebührenfreien Überprüfung.
Sie können Ihre Azure-Funktion jetzt lokal ausführen, indem Sie in Visual Studio Code auf F5
klicken oder den folgenden Befehl im Terminal ausführen:
func host start
Anschließend können Sie mithilfe eines Tools wie Postman Ihre Funktion testen, indem Sie eine POST
-Anforderung an den Endpunkt Ihrer Azure-Funktion senden. Sie müssen die Telefonnummer und die URL als Abfrageparameter angeben. Wenn Ihre Azure-Funktion beispielsweise lokal ausgeführt wird, können Sie eine Anforderung an http://localhost:7071/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com
senden. Sie sollten eine Antwort mit der verkürzten URL und dem Status von Success
erhalten.
Wenn Sie Ihre Azure-Funktion bereitstellen möchten, befolgen Sie die Schritt-für-Schritt-Anweisungen.
Nach der Bereitstellung können Sie über eine ähnliche Methode wie beim lokalen Testen auf die Funktion zugreifen. Sie müssen die Telefonnummer und die URL als Abfrageparameter angeben. Wenn Ihre Azure-Funktion beispielsweise in Azure bereitgestellt wurde, können Sie eine Anforderung an https://<YOUR AZURE FUNCTION NAME>.azurewebsites.net/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com
senden. Sie sollten eine Antwort mit der verkürzten URL und dem Status von Success
erhalten.
Den vollständigen Code für dieses Tutorial finden Sie auf GitHub.
- Ein aktives Azure-Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine aktive Azure Communication Services-Ressource Ausführlichere Informationen hierzu finden Sie unter Schnellstart: Erstellen und Verwalten einer Communication Services-Ressource.
- Eine Azure Communication Services-Telefonnummer Beziehen Sie eine Telefonnummer. Sie müssen Ihre Telefonnummer überprüfen, damit Nachrichten mit URLs gesendet werden können.
- Bereitgestellte AzUrlShortener Klicken Sie auf die Schaltfläche In Azure bereitstellen für eine schnelle Bereitstellung.
- [Optional] Stellen Sie die Admin Web-App bereit, um Links in der Benutzeroberfläche zu verwalten und zu überwachen.
- In diesem Tutorial werden SMS-Anforderungen an eine Azure-Funktion weitergeleitet. Sie können immer auch einen vorhandenen Dienst, ein anderes Framework wie Express verwenden oder das Tutorial einfach als Node.JS-Konsolen-App ausführen. Informationen zum Ausführen dieses Tutorials mit einer Azure-Funktion finden Sie in den Einrichtungsanweisungen Azure-Funktion für TypeScript.
In diesem Tutorial liegt der Fokus auf der Einrichtung einer Middleware, die Anforderungen zum Senden von SMS und die Verkürzung von URLs über den Azure-URL-Verkürzungsdienst orchestriert. Sie interagiert mit Azure Communication Services, um den Versand der SMS abzuschließen.
Für den Einstieg müssen Sie eine neue Azure-Funktion erstellen. Sie können die Azure-Funktion erstellen, indem Sie die Schritte in der Azure Functions-Dokumentation ausführen. Wenn Sie keine Azure-Funktion sondern stattdessen ein anderes Framework verwenden, überspringen Sie diesen Schritt, und fahren Sie mit dem nächsten Abschnitt fort.
Sobald die Azure-Funktion eingerichtet ist, wechseln Sie zur Datei „local.settings.json
“, und fügen Sie drei weitere Werte hinzu, die Sie speichern müssen: die Azure Communication Services-Verbindungszeichenfolge, die Telefonnummer (z. B. +15555555555) und den URL-Verkürzungsendpunkt (z. B. https://<Azure_Function_URL>/api/UrlCreate
). Diese Variablen sind alle Werte, die Sie aus den Voraussetzungen am Anfang des Dokuments generiert haben.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "node",
"ACS_CONNECTIONSTRING": "<AZURE COMMUNICATION SERVICES CONNECTION STRING>",
"ACS_PHONE_NUMBER": "<AZURE COMMUNICATION SERVICES PHONE NUMBER>",
"URL_SHORTENER": "<URL SHORTENER ENDPOINT>"
}
}
Nachdem Sie die Azure-Funktion erstellt haben, müssen Sie die Abfrageparameter konfigurieren, die zum Auslösen erforderlich sind. Die Funktion erwartet eine Telefonnummer und eine URL. Die Telefonnummer wird als Empfänger der SMS-Nachricht verwendet. Die URL ist der Link, der gekürzt und an den Empfänger gesendet wird.
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
//Parse Query Parameters
let phoneNumber = req.query.phoneNumber; // get phone number query parameter
let url = req.query.url; // get url to shorten query parameter
context.res = {
// status: 200, /* Defaults to 200 */
body: null
};
};
export default httpTrigger;
Nachdem Sie nun über die Telefonnummer und die URL verfügen, können Sie den Azure-URL-Verkürzungsdienst verwenden, um die URL zu kürzen. Stellen Sie sicher, dass Sie diesen Dienst bereits bereitgestellt haben. Der Dienst enthält mehrere Endpunkte, aber in diesem Tutorial liegt der Fokus auf dem Endpunkt „UrlCreate
“. Verwenden Sie die Methode „fetch
“, um eine POST
-Anforderung an den Azure-URL-Verkürzungsdienst mit der URL zu stellen, die Sie kürzen möchten. Der Dienst gibt ein JSON-Objekt mit der verkürzten URL zurück. Speichern Sie die verkürzte URL in einer Variablen namens „shortUrl
“. Fügen Sie im Ausschnitt den Endpunkt Ihres bereitgestellten Azure-URL-Verkürzungsdiensts ein. Informationen zum Abrufen des Endpunkts finden Sie unter Überprüfen der Bereitstellung.
const urlShortener = process.env.URL_SHORTENER
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
//Parse Query Parameters
let phoneNumberTo = req.query.phoneNumber; // get phone number query parameter
let urlToShorten = req.query.url; // get url to shorten query parameter
//Get short URL from Azure URL Shortener
const body = JSON.stringify({ "Url": url})
await fetch(urlShortener, {
method: 'POST',
body: body
})
.then(res => res.json())
.then(async data => {
const shortUrl = data["ShortUrl"]
context.log(shortUrl)
}
})
context.res = {
// status: 200, /* Defaults to 200 */
body: null
};
};
export default httpTrigger;
Da Sie nun eine kurze URL haben, verwenden Sie Azure Communication Services, um die SMS zu senden. Beginnen Sie mit der Methode „send
“ aus der Klasse „SmsClient
“ des Pakets „@azure/communication-sms
“.
npm i @azure/communication-sms --save
Diese Methode sendet die SMS an die Telefonnummer, die in den Abfrageparametern angegeben ist. Die SMS enthält die kurze URL. Weitere Informationen zum Senden von SMS finden Sie unter Senden von SMS.
import { AzureFunction, Context, HttpRequest } from "@azure/functions"
import { SmsClient } from "@azure/communication-sms"
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
//Parse Query Parameters
let to = req.query.phoneNumber; // Get phone number to send SMS to
let urlToShorten = req.query.url; // Get URL to shorten
//Get short URL from Azure URL Shortener
const body = JSON.stringify({ "Url": urlToShorten})
const urlShortener = process.env.URL_SHORTENER
await fetch(urlShortener, {
method: 'POST',
body: body
})
.then(res => res.json())
.then(async data => {
const url = data["ShortUrl"]
const connectionString = process.env.ACS_CONNECTIONSTRING
const phoneNumberFrom = process.env.ACS_PHONE_NUMBER
const smsClient = new SmsClient(connectionString);
// Send the SMS message
const sendResults = await smsClient.send({
from: phoneNumberFrom,
to: [to],
message: "Join your scheduled appointment here: " + url
}, {
enableDeliveryReport: true
});
// Use the "successful" property to verify the status.
for (const sendResult of sendResults) {
if (sendResult.successful) {
console.log("Success: ", sendResult);
} else {
console.error("Something went wrong when trying to send this message: ", sendResult);
}
}
context.res = {
// status: 200, /* Defaults to 200 */
body: url
};
})
};
Hinweis
Sie müssen Ihre Telefonnummer überprüfen, damit SMS-Nachrichten mit URLs gesendet werden können. Sobald Ihre Überprüfungsanwendungen auf den Status „Ausstehend (1-2 Tage)“ festgelegt sind, wird die Telefonnummer zum Senden von URLs aktiviert. Die vollständige Überprüfung dauert 5-6 Wochen. Weitere Informationen zur Überprüfung gebührenfreier Nummern finden Sie unter Häufig gestellte Fragen zur gebührenfreien Überprüfung.
Sie können Ihre Azure-Funktion jetzt lokal ausführen, indem Sie in Visual Studio Code auf F5
klicken oder den folgenden Befehl im Terminal ausführen:
func host start
Anschließend können Sie mithilfe eines Tools wie Postman Ihre Funktion testen, indem Sie eine POST
-Anforderung an den Endpunkt Ihrer Azure-Funktion senden. Sie müssen die Telefonnummer und die URL als Abfrageparameter angeben. Wenn Ihre Azure-Funktion beispielsweise lokal ausgeführt wird, können Sie eine Anforderung an http://localhost:7071/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com
senden. Sie sollten eine Antwort mit der verkürzten URL und dem Status von Success
erhalten.
Wenn Sie Ihre Azure-Funktion bereitstellen möchten, befolgen Sie die Schritt-für-Schritt-Anweisungen.
Nach der Bereitstellung können Sie über eine ähnliche Methode wie beim lokalen Testen auf die Funktion zugreifen. Sie müssen die Telefonnummer und die URL als Abfrageparameter angeben. Wenn Ihre Azure-Funktion beispielsweise in Azure bereitgestellt wurde, können Sie eine Anforderung an https://<YOUR AZURE FUNCTION NAME>.azurewebsites.net/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com
senden. Sie sollten eine Antwort mit der verkürzten URL und dem Status von Success
erhalten.
- Fügen Sie eine benutzerdefinierte Domäne für Ihre verkürzten URLs hinzu.