Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie Dateianlagen von einem Azure-Bot herunterladen können, der mit der Nachrichtenübermittlung in Dynamics 365 Customer Service verwendet wird.
Führen Sie die folgenden Schritte aus, um Anlagen von einem Azure-Bot herunterzuladen:
Erhalten Sie das Token für Ihren Bot mit der Microsoft App-ID Ihres Bots und dem Client Secret.
Rufen Sie das
attachmentIdaus demamsReferencesArray in den Kanaldaten der Aktivität ab.Wenn der
amsReferencesbeispielsweise["0-eus-d1-5360689c55c308cb4e3b51722e46b801"]enthält, dann ist derattachmentId0-eus-d1-5360689c55c308cb4e3b51722e46b801.Fügen Sie die
attachmentIdin eineRequestUri-Variable ein und verwenden Sie dannRequestUriwie folgt in einerGET-Anforderung.
string requestUri = $"https://botapi.skype.com/amer/v3/attachments/{attachmentId}/views/original";
var httpRequest = new HttpRequestMessage(HttpMethod.Get, requestUri);
var authorization = new AuthenticationHeaderValue("bearer", <add the botToken here>);
httpRequest.Headers.Authorization = authorization;
httpRequest.Headers.Add("BotAcsId", activity.Recipient.Id);
HttpResponseMessage response = await client.SendAsync(httpRequest);
Dateianhänge verwalten
Anmerkung
Die Informationen in diesem Abschnitt gelten nur für die Government Community Cloud (GCC).
In diesem Abschnitt wird beschrieben, wie Sie Dateianhänge im Messaging-Kanal verwalten.
Überprüfen Sie als Erstes die Dateiformate der Anlagen im Nachrichtenkanal.
Dateianhang-Formate
Wenn Dateianlagen vom Dynamics 365 Contact Center an den Azure-Agent im Messagingkanal gesendet werden, werden die zum Herunterladen der Dateien erforderlichen Informationen in den amsReferences und amsMetadata Feldern der Activity.ChannelData-Eigenschaft übergeben.
Messaging-Kanal
{
"recipient":{
"id":"8:acs:5ecf37b1-11 Oc-414g-ab33-804ffd6b4a33_eooe0010-7c57-1ceb-nec-113aOdOOb272",
"name":"Omnichannel-test-bot",
"aadObjectId":null,
"role":null
},
"attachments ":null,
"channelData":{
"tags":"Channelld-lcw,FromCustomer",
"deliveryMode":"bridged",
"fromUserId":"8:acs:5ecf37b1-110c-4149-ab33-804ffd6b4a33_00000010-61 b9-ab1 d-3dfe-9c3aOd009ea4",
"amsReferences":[
"0-wus-d6-20e7797d208fab388cc11b09674d166"
],
"amsMetadata":[
{
"contentType":"image/png",
"fileName":"SurnmerTime.png"
}
],
"sourceChannelId":"omnichannel"
}
}
Verwalten von Dateianhängen im Azure-Agent-Code
Informationen für den Anhang werden im Omnichannel-Agent-Servicekanal übergeben und können im Agent-Code abgerufen werden, wie im folgenden Beispiel gezeigt.
// 1. Retrieve Attachment ID from ChannelData["amsReferences"]
if (activity.ChannelData != null &&
activity.ChannelData is Dictionary<string, JsonElement> channelData &&
channelData.TryGetValue("amsReferences", out var amsReferencesElement))
{
var amsReferencesString = amsReferencesElement.GetString() ?? amsReferencesElement.ToString();
string attachmentId = JsonConvert.DeserializeObject<string[]>(amsReferencesString).FirstOrDefault();
// 2. Build HTTP request for specified attachment ID.
string requestUri = $"https://botapi.skype.com/amer/v3/attachments/{attachmentId}/views/original";
var httpRequest = new HttpRequestMessage(HttpMethod.Get, requestUri);
// 3. Acquire authentication token and add it to request headers
// Option A: Using IConnections (recommended)
var connection = connections.GetConnection("ServiceConnection");
var token = await connection.GetAccessTokenAsync(
"https://api.botframework.com",
new[] { "https://api.botframework.com/.default" },
forceRefresh: false);
// Option B: Using OAuth client credentials flow
// var tokenRequest = new HttpRequestMessage(HttpMethod.Post, $"https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token")
// {
// Content = new FormUrlEncodedContent(new Dictionary<string, string>
// {
// { "grant_type", "client_credentials" },
// { "client_id", botAppId },
// { "client_secret", botAppSecret },
// { "scope", "https://api.botframework.com/.default" }
// })
// };
// var tokenResponse = await client.SendAsync(tokenRequest);
// var tokenContent = await tokenResponse.Content.ReadAsStringAsync();
// var token = JsonConvert.DeserializeObject<dynamic>(tokenContent).access_token;
var authorization = new AuthenticationHeaderValue("bearer", token);
httpRequest.Headers.Add("Authorization", authorization.ToString());
// 4. Add Azure Communication Services Bot ID to request header. This is required to achieve good download performance.
httpRequest.Headers.Add("BotAcsId", activity.Recipient.Id);
// 5. Use HttpClient to execute the request and download attachment
var response = await client.SendAsync(httpRequest);
// 6. Save HTTP response stream to the file
var responseContentStream = await response.Content.ReadAsStreamAsync();
using (FileStream fileCreateStream = new FileStream("file path", FileMode.Create))
{
await responseContentStream.CopyToAsync(fileCreateStream);
}
}
Verwandte Informationen
Kartenunterstützung nach Kanal
Unterstützung für Live-Chat und asynchrone Kanäle