Aracılığıyla paylaş


Kısa URL gönder

SMS iletileri 160 karakterle sınırlıdır ve bu da müşterilere URL gönderme yeteneğinizi bozabilir. URL'ler sorgu parametreleri, şifrelenmiş bilgiler vb. içerdiğinden 160 karakter sınırını aşabilir. 160 karakter sınırının çok altında kaldıkları için SMS aracılığıyla göndermeye uygun kısa URL'ler oluşturmak için Azure URL kısaltıcısını kullanabilirsiniz. 

Bu belgede Azure İletişim Hizmetleri'ni Azure URL Kısaltıcısı ile tümleştirme işlemi özetlenmektedir. URL Kısaltıcı, kısaltılmış bağlantıları kolayca oluşturmanıza, yönetmenize ve izlemenize olanak tanıyan açık kaynak bir hizmettir.

Örnek kod

Bu öğreticinin tamamlanmış kodunu C# için Azure Örnekleri GitHub SMS Url Kısaltıcısı'nda bulabilirsiniz.

Önkoşullar

Mimariye genel bakış

Bu makalede, Azure URL Kısaltıcı hizmeti aracılığıyla SMS gönderme ve URL'leri kısaltma isteklerini düzenlemeye yönelik ara yazılımların nasıl ayarlanacağı açıklanmaktadır. SMS gönderme işlemini tamamlamak için Azure İletişim Hizmetleri ile etkileşim kurar.

Mimariye genel bakış diyagramı.

Azure İşlevini ayarlama

Başlamak için yeni bir Azure İşlevi oluşturmanız gerekir. Azure İşlevleri'ndeki adımları izleyerek Azure İşlevi'ni oluşturabilirsiniz. Azure İşlevi kullanmıyorsanız ve bunun yerine farklı bir çerçeve kullanıyorsanız, bu adımı atlayın ve sonraki bölüme geçin.

Azure İşlevi ayarlandıktan sonra dosyaya local.settings.json gidin ve depolamanız gereken üç değer daha ekleyin: Azure İletişim Hizmetleri bağlantı dizesi, +15555555555 gibi telefon numarası ve gibi https://<Azure_Function_URL>/api/UrlCreatebir URL Kısaltıcı uç noktası. Bu değişkenler, makalenin başındaki önkoşullardan oluşturduğunuz tüm değerlerdir.


{
    "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>" 
    }
}

Sorgu parametrelerini yapılandırma

Azure İşlevi'ni oluşturduktan sonra, tetikleme için gereken sorgu parametrelerini yapılandırmanız gerekir. İşlev bir telefon numarası ve URL bekler. Telefon numarası, SMS iletisinin alıcısıdır. URL, kısaltılan ve alıcıya gönderilen bağlantıdır.


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);
        }
    }
}

URL'yi kısaltma

Artık telefon numarası ve URL'niz olduğuna göre, URL'yi kısaltmak için Azure URL Kısaltıcı hizmetini kullanabilirsiniz. Azure URL Kısaltıcı hizmetini dağıttıktan emin olun. Hizmet birkaç uç nokta içerir, ancak bu öğretici için odak, UrlCreate uç noktasındadır. Azure URL Kısaltıcı hizmetine kısaltmak istediğiniz URL ile bir PostAsync isteği göndermek için POST yöntemini kullanın.

Hizmet kısaltılmış URL'ye sahip bir JSON nesnesi döndürür. Kısaltılmış URL'yi adlı shortUrlbir değişkende depolayın. Kod parçacığına dağıtılan Azure URL Kısaltma hizmetinizin uç noktasını ekleyin. Uç noktayı alma hakkında bilgi için bkz Dağıtımı doğrulama.

...
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);
        }
    }
}

SMS gönder

URL kısaltıldığından, SMS göndermek için Azure İletişim Hizmetleri kullanabilirsiniz. send paketinden SmsClient sınıfından Azure.Communication.Sms yöntemini kullanın.


dotnet add package Azure.Communication.Sms

Bu yöntem, SMS'i sorgu parametrelerinde sağlanan telefon numarasına gönderir. SMS kısaltılmış URL'yi içerir. SMS gönderme hakkında daha fazla bilgi için bkz . SMS gönderme.

...
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);
        }
    }
}

Yerel olarak test edin

Not

URL'lerle SMS mesajları göndermek için telefon numaranızı doğrulamanız gerekir. Doğrulama başvurunuz bir ila iki gün içinde bekleme durumuna ayarlandıktan sonra, URL gönderebilmek için telefon numarası etkinleştirilecek. Tam doğrulama beş ile altı hafta sürer. Ücretsiz numara doğrulama hakkında daha fazla bilgi için Ücretsiz Numara Doğrulama SSS bölümüne bakınız.

Visual Studio Code'a basarak F5 Azure İşlevinizi yerel olarak çalıştırın veya terminalde aşağıdaki komutu çalıştırın:

func host start

Ardından, Azure İşlevinizin uç noktasına istekte bulunarak işlevinizi test etmek için Postman gibi bir POST araç kullanın. Telefon numarasını ve URL'yi sorgu parametreleri olarak sağlamanız gerekir. Örneğin, Azure İşleviniz yerel olarak çalışıyorsa http://localhost:7071/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com adresine bir istekte bulunabilirsiniz. Kısaltılmış URL'yi ve durumunu Successiçeren bir yanıt almalısınız.

Azure’a dağıtın

Azure İşlevinizi dağıtmak için adım adım yönergeleri izleyin.

Dağıtıldıktan sonra, işleve yerel olarak test ederken yaptığınız gibi benzer bir yöntemle erişebilirsiniz. Telefon numarasını ve URL'yi sorgu parametreleri olarak sağlamanız gerekir. Örneğin, Azure İşleviniz Azure'a dağıtıldıysa https://<YOUR AZURE FUNCTION NAME>.azurewebsites.net/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com adresine bir istekte bulunabilirsiniz. Kısaltılmış URL'yi ve durumunu Successiçeren bir yanıt almalısınız.

Örnek kod

Bu öğreticinin tamamlanmış kodunu JavaScript için Azure Örnekleri GitHub SMS Url Kısaltıcısı sayfasında bulabilirsiniz.

Önkoşullar

Mimariye genel bakış

Bu makalede, Azure URL Kısaltma hizmeti aracılığıyla SMS gönderme isteklerini ve URL'lerin kısaltılması isteklerini düzenleyen bir ara yazılım ayarlama işlemi açıklanmaktadır. SMS gönderme işlemini tamamlamak için Azure İletişim Hizmetleri ile etkileşim kurar.

Mimariye genel bakış diyagramı.

Azure İşlevini ayarlama

Başlamak için yeni bir Azure İşlevi oluşturmanız gerekir. Azure İşlevleri belgelerindeki adımları izleyerek Azure İşlevi'ni oluşturabilirsiniz. Azure İşlevi kullanmıyorsanız ve bunun yerine farklı bir çerçeve kullanıyorsanız, bu adımı atlayın ve sonraki bölüme geçin.

Azure İşlevi ayarlandıktan sonra dosyaya local.settings.json gidin ve depolamanız gereken üç değer daha ekleyin: Azure İletişim Hizmetleri bağlantı dizesi, +15555555555 gibi telefon numarası ve gibi https://<Azure_Function_URL>/api/UrlCreateURL Kısaltıcı uç noktası. Bu değişkenler, bu makalenin başındaki önkoşullardan oluşturduğunuz tüm değerlerdir.


{
    "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>" 
    }
}

Sorgu parametrelerini yapılandırma

Azure İşlevi'ni oluşturduktan sonra, tetikleme için gereken sorgu parametrelerini yapılandırmanız gerekir. İşlev bir telefon numarası ve URL bekler. Telefon numarası, SMS iletisinin alıcısı olarak kullanılır. URL, kısaltılan ve alıcıya gönderilen bağlantıdır.


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;

URL'yi kısaltma

Artık telefon numarası ve URL'niz olduğuna göre, URL'yi kısaltmak için Azure URL Kısaltıcı hizmetini kullanabilirsiniz. Azure URL Kısaltıcı hizmetini zaten dağıttıktan emin olun. Hizmet birkaç uç nokta içerir, ancak bu öğretici için odak, UrlCreate uç noktasındadır. Azure URL Kısaltıcı hizmetine kısaltmak istediğiniz URL ile bir fetch isteği göndermek için POST yöntemini kullanın.

Hizmet kısaltılmış URL'ye sahip bir JSON nesnesi döndürür. Kısaltılmış URL'yi adlı shortUrlbir değişkende depolayın. Kod parçacığına dağıtılan Azure URL Kısaltma hizmetinizin uç noktasını ekleyin. Uç noktayı alma hakkında bilgi için bkz Dağıtımı doğrulama.


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;

SMS gönder

Artık kısa URL'niz olduğuna göre, SMS göndermek için Azure İletişim Hizmetleri kullanın. send paketinden SmsClient sınıfı içindeki @azure/communication-sms yöntemiyle başlayın.


npm i @azure/communication-sms --save

Bu yöntem, SMS'i sorgu parametrelerinde sağlanan telefon numarasına gönderir. SMS kısa URL'yi içerir. SMS gönderme hakkında daha fazla bilgi için bkz . SMS gönderme.


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
      };
    })

};

Yerel olarak test edin

Not

URL'lerle SMS mesajları göndermek için telefon numaranızı doğrulamanız gerekir. Doğrulama uygulamanız bekleme durumuna (bir-iki gün) ayarlandıktan sonra, URL'leri göndermek için etkinleştirilecek telefon numarası. Tam doğrulama beş ile altı hafta sürer. Ücretsiz numara doğrulama hakkında daha fazla bilgi için bkz. Ücretsiz Doğrulama SSS.

Azure İşlevinizi yerel olarak çalıştırmak için Visual Studio Code'a basın F5 veya terminalde aşağıdaki komutu çalıştırın:

func host start

Ardından Postman gibi bir araç kullanarak Azure İşlevinizin uç noktasına istekte POST bulunarak işlevinizi test edin. Telefon numarasını ve URL'yi sorgu parametreleri olarak sağlamanız gerekir. Örneğin, Azure İşleviniz yerel olarak çalışıyorsa http://localhost:7071/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com adresine bir istekte bulunabilirsiniz. Kısaltılmış URL'yi ve durumunu Successiçeren bir yanıt almalısınız.

Azure’a dağıtın

Azure İşlevinizi dağıtmak için adım adım yönergelere bakın.

Dağıtıldıktan sonra, işleve yerel olarak test ederken yaptığınız gibi benzer bir yöntemle erişebilirsiniz. Telefon numarasını ve URL'yi sorgu parametreleri olarak sağlamanız gerekir. Örneğin, Azure İşleviniz Azure'a dağıtıldıysa https://<YOUR AZURE FUNCTION NAME>.azurewebsites.net/api/<FUNCTION NAME>?phoneNumber=%2B15555555555&url=https://www.microsoft.com adresine bir istekte bulunabilirsiniz. Kısaltılmış URL'yi ve durumunu Successiçeren bir yanıt almalısınız.

Sonraki adımlar

  • Kısaltılmış URL'leriniz için özel bir etki alanı ekleyin.