Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u bestandsbijlagen downloadt van een Azure-bot die wordt gebruikt met berichten in Dynamics 365 Customer Service.
Voer de volgende stappen uit om bijlagen van een Azure-bot te downloaden:
Verkrijg de token voor je bot met behulp van de Microsoft App ID van je bot en de client secret.
Haal de
attachmentIdop uit deamsReferences-matrix in de kanaalgegevens van de activiteit.Als de
amsReferencesbijvoorbeeld["0-eus-d1-5360689c55c308cb4e3b51722e46b801"]bevat, dan isattachmentId0-eus-d1-5360689c55c308cb4e3b51722e46b801.Voeg de
attachmentIdin eenRequestUrivariabele in en gebruikRequestUrideze vervolgens in eenGETaanvraag, zoals:
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);
Bestandsbijlagen beheren
Opmerking
De informatie in deze sectie is alleen van toepassing op Government Community Cloud (GCC).
In deze sectie wordt beschreven hoe u bestandsbijlagen beheert in het berichtenkanaal.
Controleer eerst de indelingen van bestandsbijlagen in het berichtenkanaal.
Bestandsbijlage-indelingen
Wanneer bestandsbijlagen vanuit Dynamics 365 Contact Center worden verzonden naar de Azure-agent in het berichtenkanaal, worden de gegevens die nodig zijn om de bestanden te downloaden, doorgegeven in de amsReferences velden amsMetadata van de Activity.ChannelData eigenschap.
Berichtenkanaal
{
"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"
}
}
Bestandsbijlagen beheren in uw Azure-agentcode
Bijlagegegevens worden doorgegeven in het servicekanaal van de Omnichannel-agent en kunnen worden geopend in agentcode, zoals wordt weergegeven in het volgende voorbeeld.
// 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);
}
}
Verwante gegevens
Kaartondersteuning per kanaal
Ondersteuning voor live chat en asynchrone kanalen