如何使用 .NET SDK 从 Twilio 下载彩信媒体

问题描述 投票:0回答:2

我的团队正在开发一个项目来发送和接收 Twilio MMS 消息。多年来,我们一直在 C# SDK 中使用 Twilio 客户端来成功发送消息。现在通过这个项目,很清楚如何确定是否有通过彩信发送的媒体文件并找到它们,但我们需要一些帮助来下载它们。

我知道我们可以用 C# 编写代码并添加必要的身份验证,但我希望将我们的所有活动保留在 Twilio SDK 和客户端中,以便我们当前或潜在的未来的任何人都可以轻松访问代码开发商。有没有办法通过 Twilio 客户端下载文件?我在文档中没有看到任何示例。

c# asp.net twilio-api
2个回答
1
投票

Twilio SDK 可以帮助您找到 MMS 消息的 media,有关媒体的信息也会传递到您的 Webhook 处理程序中。但是,SDK 没有任何类/方法来帮助您下载媒体文件。

默认情况下,如果您知道 URL,则可以公开访问该文件,并且不需要身份验证。您可以为 MMS 媒体文件启用基本身份验证,这样只有您可以通过使用您的帐户 SID 和身份验证令牌或 API 密钥 SID 和 API 密钥秘密进行身份验证来下载它们。

这里有一个 C# 示例,介绍如何使用和不使用基本身份验证下载文件:

using System.Net.Http.Headers;
using System.Text;

const string accountSid = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const string messageSid = "MMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const string mediaSid = "MExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var mediaUrl = $"https://api.twilio.com/2010-04-01/Accounts/{accountSid}/Messages/{messageSid}/Media/{mediaSid}";
const string localFilePath = "image.jpg";

using var httpClient = new HttpClient();
using var httpRequest = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri(mediaUrl)
};

const bool useBasicAuth = true;
if (useBasicAuth)
{
    var authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");
    var authHeaderValue = $"{accountSid}:{authToken}";
    authHeaderValue = Convert.ToBase64String(Encoding.ASCII.GetBytes(authHeaderValue));
    httpRequest.Headers.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValue);
}

using var response = await httpClient.SendAsync(httpRequest);

if (!response.IsSuccessStatusCode)
{
    Console.WriteLine($"HTTP Status Code: {response.StatusCode}");
    Console.WriteLine($"Response body: {await response.Content.ReadAsStringAsync()}");
    return;
}

await using var fileStream = new FileStream(localFilePath, FileMode.CreateNew);
await response.Content.CopyToAsync(fileStream);

0
投票

如何从上述代码中获取图像的 mediaSid?

© www.soinside.com 2019 - 2024. All rights reserved.