Я сделал небольшую демонстрацию, выполнив следующее (и это работает):
- LogicApp # 1 для загрузки видео: запускает одну папку OneDrive «Input» и загружает видео в Video Indexer для индексации
- LogicApp # 2 для сбора результатов: триггер http, который будет вызываться при индексировании, затем получить подписи и создать файл в папке «Вывод» OneDrive.
Трюк тот факт, что, как описано в Upload Video
операции Video Indexer (см. здесь ), вы можете добавить обратный вызов:
![Upload video documentation](https://i.stack.imgur.com/t0Vyt.png)
Как видите, этот обратный вызов будет иметь идентификатор видео, добавленного в строку запроса.
Так что в вашем LogicApp # 2 используйте это id
для действия Get Video Captions
Video Indexer:
![Implementation detail 1](https://i.stack.imgur.com/2ECLC.png)
Выражение для получения идентификатора: triggerOutputs()['queries']['id']
.
Тогда вам просто нужно скопировать в свой вывод:
![Implementation detail 2](https://i.stack.imgur.com/1d2zk.png)
Я использовал именование на основе идентификатора видео: concat(triggerOutputs()['queries']['id'],'-Captions.vtt')
И это работает: ![Result](https://i.stack.imgur.com/11PdT.png)
Чтобы получить лучшую реализацию, вы должны добавить проверку, чтобы отфильтровать обратные вызовы из-за обнаружений лиц, упомянутых выше. Это можно сделать, отфильтровав значение строки запроса «Состояние».
Вот код моего LogicApp # 2 (с несколькими скрытыми полями):
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Create_file": {
"inputs": {
"body": "@body('Get_Video_Captions')",
"host": {
"connection": {
"name": "@parameters('$connections')['onedrive']['connectionId']"
}
},
"method": "post",
"path": "/datasets/default/files",
"queries": {
"folderPath": "/LogicAppsDemo/VideoIndexing/Output",
"name": "@{concat(triggerOutputs()['queries']['id'],'-Captions.vtt')}"
}
},
"runAfter": {
"Get_Video_Captions": [
"Succeeded"
]
},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
},
"type": "ApiConnection"
},
"Get_Account_Access_Token": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['videoindexer-v2']['connectionId']"
}
},
"method": "get",
"path": "/auth/@{encodeURIComponent('##VI-REGION##')}/Accounts/@{encodeURIComponent('##VI-ACCOUNT##')}/AccessToken",
"queries": {
"allowEdit": false
}
},
"runAfter": {},
"type": "ApiConnection"
},
"Get_Video_Captions": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['videoindexer-v2']['connectionId']"
}
},
"method": "get",
"path": "/@{encodeURIComponent('##VI-REGION##')}/Accounts/@{encodeURIComponent('##VI-ACCOUNT##')}/Videos/@{encodeURIComponent(triggerOutputs()['queries']['id'])}/Captions",
"queries": {
"accessToken": "@body('Get_Account_Access_Token')",
"format": "vtt",
"language": "English"
}
},
"runAfter": {
"Get_Account_Access_Token": [
"Succeeded"
]
},
"type": "ApiConnection"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"manual": {
"inputs": {
"method": "POST",
"schema": {}
},
"kind": "Http",
"type": "Request"
}
}
},
"parameters": {
"$connections": {
"value": {
"onedrive": { ... },
"videoindexer-v2": { ... }
}
}
}
}
Кстати, Ваш вариант использования почти описан в сообщении в блоге от Microsoft (здесь они получают индекс, а не подписи): https://azure.microsoft.com/en-us/blog/logic-apps-flow-connectors-will-make-automating-video-indexer-simpler-than-ever/