你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Functions 的 Twilio 绑定

本文介绍如何使用 Azure Functions 中的 Twilio 绑定发送短信。 Azure Functions 支持 Twilio 的输出绑定。

此参考信息面向 Azure Functions 开发人员。 Azure Functions 的新手请从以下资源入手:

安装扩展

你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:

函数在独立的 C# 工作进程中执行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南

扩展的功能因扩展版本而异:

当前不支持 Twilio 用于独立工作进程应用。

安装捆绑包

从 Functions 版本 2.x 开始,HTTP 扩展是扩展包的一部分,在 host.json 项目文件中指定。 若要了解详细信息,请参阅扩展捆绑包

此版本的扩展应该已可以通过扩展包版本 2.x 提供给函数应用。

示例

除非另有说明,否则这些示例特定于版本 2.x 和更高版本的 Functions 运行时。

可使用以下 C# 模式之一来创建 C# 函数:

  • 独立辅助角色模型:编译的 C# 函数,该函数在独立于运行时的工作进程中运行。 需要独立工作进程才能支持在 LTS 和非 LTS 版 .NET 和 .NET Framework 上运行的 C# 函数。
  • 进程内模型:编译的 C# 函数,该函数在与 Functions 运行时相同的进程中运行。
  • C# 脚本:主要在 Azure 门户中创建 C# 函数时使用。

在独立工作进程中运行的函数应用当前不支持 Twilio 绑定。

以下示例演示 function.json 文件中的一个 Twilio 输出绑定以及使用该绑定的 JavaScript 函数

下面是 function.json 文件中的绑定数据:

示例 function.json:

{
  "type": "twilioSms",
  "name": "message",
  "accountSidSetting": "TwilioAccountSid",
  "authTokenSetting": "TwilioAuthToken",
  "from": "+1425XXXXXXX",
  "direction": "out",
  "body": "Azure Functions Testing"
}

JavaScript 代码如下所示:

module.exports = async function (context, myQueueItem) {
    context.log('Node.js queue trigger function processed work item', myQueueItem);

    // In this example the queue item is a JSON string representing an order that contains the name of a
    // customer and a mobile number to send text updates to.
    var msg = "Hello " + myQueueItem.name + ", thank you for your order.";

    // Even if you want to use a hard coded message in the binding, you must at least
    // initialize the message binding.
    context.bindings.message = {};

    // A dynamic message can be set instead of the body in the output binding. The "To" number 
    // must be specified in code. 
    context.bindings.message = {
        body : msg,
        to : myQueueItem.mobileNumber
    };
};

完整的 PowerShell 示例当前不可用于 SendGrid 绑定。

下面的示例演示如何按以下 function.json 中所定义的,使用输出绑定发送短信。

    {
      "type": "twilioSms",
      "name": "twilioMessage",
      "accountSidSetting": "TwilioAccountSID",
      "authTokenSetting": "TwilioAuthToken",
      "from": "+1XXXXXXXXXX",
      "direction": "out",
      "body": "Azure Functions Testing"
    }

可以将序列化的 JSON 对象传递到 func.Out 参数以发送短信。

import logging
import json
import azure.functions as func

def main(req: func.HttpRequest, twilioMessage: func.Out[str]) -> func.HttpResponse:

    message = req.params.get('message')
    to = req.params.get('to')

    value = {
      "body": message,
      "to": to
    }

    twilioMessage.set(json.dumps(value))

    return func.HttpResponse(f"Message sent")

下面的示例演示如何使用 TwilioSmsOutput 注释发送短信。 tofrombody 的值在属性定义中是必需的,即使以编程方式重写它们也是如此。

package com.function;

import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;

public class TwilioOutput {

    @FunctionName("TwilioOutput")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = { HttpMethod.GET, HttpMethod.POST },
                authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
            @TwilioSmsOutput(
                name = "twilioMessage",
                accountSid = "AzureWebJobsTwilioAccountSID",
                authToken = "AzureWebJobsTwilioAuthToken",
                to = "+1XXXXXXXXXX",
                body = "From Azure Functions",
                from = "+1XXXXXXXXXX") OutputBinding<String> twilioMessage,
            final ExecutionContext context) {

        String message = request.getQueryParameters().get("message");
        String to = request.getQueryParameters().get("to");

        StringBuilder builder = new StringBuilder()
            .append("{")
            .append("\"body\": \"%s\",")
            .append("\"to\": \"%s\"")
            .append("}");

        final String body = String.format(builder.toString(), message, to);

        twilioMessage.setValue(body);

        return request.createResponseBuilder(HttpStatus.OK).body("Message sent").build();
    }
}

特性

进程内独立工作进程 C# 库都使用属性来定义输出绑定。 C# 脚本改为使用 function.json 配置文件

在独立工作进程中运行的函数应用当前不支持 Twilio 绑定。

批注

TwilioSmsOutput 注释允许通过提供以下配置值以声明性方式配置 Twilio 输出绑定:

+

TwilioSmsOutput 注释放置在 OutputBinding<T> 参数上,其中 T 可以是任何本机 Java 类型,如 intStringbyte[] 或 POJO 类型。

配置

下表说明了在 function.json 文件中设置的绑定配置属性,这些属性因运行时版本而异:

function.json 属性 说明
type 必须设置为 twilioSms
direction 必须设置为 out
name 在 Twilio 短信的函数代码中使用的变量名。
AccountSidSetting 此值必须设置为保留 Twilio 帐户 Sid 的应用设置的名称 (TwilioAccountSid)。 未设置时,默认应用设置名称为 AzureWebJobsTwilioAccountSid
AuthTokenSetting 此值必须设置为保留 Twilio 身份验证令牌的应用设置的名称 (TwilioAccountAuthToken)。 未设置时,默认应用设置名称为 AzureWebJobsTwilioAuthToken
from 此值设置为发送短信的电话号码。
body 如果不需要在函数的代码中动态设置短信,则可以使用此值对其进行硬编码。

在版本 2.x 中,可以在代码中设置 to 值。

在本地开发时,请将应用程序设置添加到 Values 集合的 local.settings.json 文件

后续步骤