Застрял: Как связать / соединить два Azure Logi c приложения вместе? - PullRequest
0 голосов
/ 23 апреля 2020

У меня возникли проблемы при попытке соединить / связать два Azure logi c приложения вместе.

Вот мой сценарий и то, как я пытаюсь использовать приложения Logi c.

Я создал первое приложение Logi c: оно позволяет пользователю загружать .mp4 мультимедийный файл в папку на OneDrive, и приложение logi c проверяет, есть ли новый файл в этой папке OneDrive. Если есть новый файл, он запустит приложение logi c и проиндексирует видео на https://www.videoindexer.ai/.

2nd - Logi c Приложение: после того, как видео проиндексировано на https://www.videoindexer.ai/, я хочу, чтобы пользователь выбирал язык (-и) из созданной мной пользовательской веб-страницы для перевода подписей ( вот пользовательская веб-страница ). Как только пользователь выбирает язык (языки), он нажимает «отправить», и это отправляет данные (языки) в мою конечную точку URL второго приложения logi c, а также запускает мое второе приложение logi c и получает подписи на основе выбора языка пользователем. Наконец, он выведет эти файлы подписей в папку OneDrive.

Вот как я создал оба приложения Logi c:

1st Logi c APP:

enter image description here enter image description here enter image description here

2nd Logi c APP:

enter image description here enter image description here enter image description here

HTML:

<form id="language-form">
<h3>Please select the languages(s) for translating captions: </h3>
  <ul>
    <li><label><input type="checkbox" name="language" value="en-US"> English</label></li>
    <li><label><input type="checkbox" name="language" value="es-ES"> Spanish</label></li>
    <li><label><input type="checkbox" name="language" value="ko-KR"> Korean</label></li>
    <li><label><input type="checkbox" name="language" value="th-TH"> Thai</label></li>
    <li><label><input type="checkbox" name="language" value="ja-JP"> Japanese</label></li>
  </ul>
  <button type="submit">Submit</button>
</form>

JavaScript:

function fetchForLanguages(languages) {
  console.info('starting fetch for', languages)
  return fetch("https://prod-00.westus2.logic.azure.com:443/workflows/xxxxxxxxxxxxxxxxx", { // this is my azure  provided endpoint
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      languages: languages
    })
  }).then(response => {
    if (!response.ok) {
      throw new Error(`Network response was not ok: ${response.status} ${response.statusText}`);
    }
    return response.json()
  })
}


function handleSubmit(event) {
  event.preventDefault()
  const data = new FormData(event.currentTarget)
  const languages = data.getAll('language')
  console.info('languages selected:', languages)
  fetchForLanguages(languages)
    .then((result) => console.log('got result:', result))
}

let form = document.getElementById('language-form')
form.addEventListener('submit', handleSubmit)

1 Ответ

0 голосов
/ 27 апреля 2020

Вот рабочий процесс, очень похожий на ваш с объяснением:

[https://azure.microsoft.com/en-us/blog/logic-apps-flow-connectors-will-make-automating-video-indexer-simpler-than-ever/] [1]

Здесь есть python функция для проверки файла готов, прежде чем отправить электронное письмо:

import requests

loc = '' # location 
acc_id = '' # account id
vi_subscription_key = '' # primary key

def get_access_token(loc, acc_id):

    headers = {'Ocp-Apim-Subscription-Key': vi_subscription_key}
    params = {'allowEdit': 'true'}

    access_token_req = requests.get(
        f'https://api.videoindexer.ai/auth/{loc}/Accounts/{acc_id}/AccessToken',
        params=params,
        headers=headers)

    access_token = access_token_req.text[1:-1]

    return access_token


def is_video_proccessed(loc, acc_id, access_token, video_id, video_language='English'):        

    params = {'accessToken': access_token,
            'language': video_language }


    get_video_info_req = requests.get(
        f'https://api.videoindexer.ai/{loc}/Accounts/{acc_id}/Videos/{video_id}/Index',
        params=params)

    response = get_video_info_req.json()       

    if (response['state'] != "Uploaded") and (response['state'] != 'Processing'):
        print(f'Video {video_id} finished processing')
        return True

Надеюсь, эта помощь.

...