Paper Contacter le support | état du système L'état du système
Contenu de la page

    Notifications d'acquisition dynamique

    Dans cette rubrique, vous découvrirez les notifications Dynamic Ingest, qui fournissent des informations sur la progression de vos travaux d'intégration. Notez que ce document s'applique uniquement au système d'acquisition hérité - pour Dynamic Delivery, voir Notifications pour Dynamic Ingest

    Dynamic Ingest API notifications

    Vous pouvez spécifier une ou plusieurs URL de rappel pour recevoir des notifications concernant les résultats du processus d'ingestion. Les URL que vous spécifiez doivent être pour les applications pouvant accepter les requêtes POST. Les notifications seront envoyées au format JSON.

    installation

    Voici un exemple.

    • Utilisateur avec l'id de pub 57838016001
    • Souhaite utiliser Dynamic Ingest pour télécharger un fichier vidéo source situé à l'adresse https://s3.amazonaws.com/bucket/mysourcevideo.mp4
    • Souhaite télécharger un titre existant dans le catalogue avec l'identifiant vidéo 5199670523001
    • Utilisation du profil haute résolution
    • Souhaite recevoir des rappels à deux extrémités situées respectivement à l'adresse http: // host1 / path1 et http: // host2 / path2

    La requête DI ressemblerait à ceci:

    Demande POST

    Demander un corps

    Exemple de notification

    Les notifications sont envoyées en tant que requêtes POST avec la notification dans le corps de la demande en tant que JSON. . Voici quelques exemples de notification:

        {
            "accountId": "57838016001",
            "entityType": "ASSET",
            "version": "1",
            "status": "SUCCESS",
            "videoId": "5199670523001",
            "entity": "5199679295001",
            "action": "CREATE",
            "jobId": "699db2e5-aeb7-4765-a4a7-2cc68c7360bd"
        }
        {
            "action": "CREATE",
            "status": "SUCCESS",
            "entityType": "DIGITAL_MASTER",
            "videoId": "5199670523001",
            "entity": "5199670523001",
            "accountId": "57838016001",
            "version": "1",
            "jobId": "699db2e5-aeb7-4765-a4a7-2cc68c7360bd"
        }
        {
            "entityType": "ASSET",
            "status": "SUCCESS",
            "action": "CREATE",
            "entity": "5199680423001",
            "profileRefId": "ts7",
            "version": "1",
            "accountId": "57838016001",
            "videoId": "5199670523001",
            "jobId": "699db2e5-aeb7-4765-a4a7-2cc68c7360bd"
        }
        {
            "jobId": "699db2e5-aeb7-4765-a4a7-2cc68c7360bd",
            "accountId": "57838016001",
            "version": "1",
            "status": "SUCCESS",
            "entityType": "TITLE",
            "entity": "5199670523001",
            "videoId": "5199670523001",
            "action": "CREATE"
        }

    Remarques

    • Exception: toutes les notifications pour le contenu conditionné DRM sont renvoyées en tant que paires clé / valeur. Dans ce cas, le Content-Type l'en-tête sera application/x-www-form-urlencoded. Dans le cas contraire, le Content-Type sera application/json

    Champs de notification

    Article Description
    status sera FAILED si l'acquisition ou la création d'une interprétation n'a pas réussi, SUCCESS si la requête a réussi
    accountId l'identifiant du compte
    videoId l'identifiant de la vidéo
    jobId l'ID du travail pour la requête Dynamic Ingest
    profileRefId

    Pour les rendus vidéo, ce sera le reference id vous avez spécifié le rendu dans votre profil d'intégration.

    Pour les manifestes, le profileRefId indiquera le type du manifeste:

    • HlsManifest pour un manifeste HLS NG
    • HdsManifest pour un manifeste HDS
    • DashManifest pour les manifestes DASH (2 - un des actifs du manifeste est utilisé pour la consommation dans le MAPI, l’autre est utilisé pour la consommation dans le CMS API)
    • SmoothIsmManifest pour un manifeste Smooth (2 - un des actifs du manifeste est utilisé pour la consommation dans le MAPI, l’autre est utilisé pour la consommation dans le CMS API)
    entity s'il existe, le Video Cloud identifiant de la ressource ingérée ou ayant échoué (si l'objet vidéo a été créé avec succès dans Video Cloud)
    entityType le type d'actif signalé - par exemple: TITLE (une vidéo), DIGITAL_MASTER, ASSET (un rendu, un fichier de légendes ou une image)
    errorMessage une explication de la raison pour laquelle l'ingestion a échoué si elle l'a fait
    version une chaîne toujours égale à "1"
    action l'action qui s'est produite - par exemple, CREATE

    Interprétation des notifications

    Une notification contenant "action": "CREATE" et "status": "SUCCESS" indique l'achèvement d'un processus.

    • Si la entityType is TITLE, le traitement d'une vidéo ingérée est terminé.
    • Si la entityType is ASSET, puis un rendu, une image, un manifeste ou un fichier WebVTT a été ajouté à votre vidéo.

    Pas de thé "status": "SUCCESS" sur un titre indique que le traitement est terminé, mais ne signifie pas nécessairement que tous les rendus ont été créés avec succès. Pour déterminer si l'ingestion dynamique de vidéos a réussi, voir Obtenir le statut des demandes d'acquisition dynamiques

    Application d'exemple basique

    Vous trouverez ci-dessous le code d’une application de journalisation simple pour Dynamic Ingest API notification. Cette application est écrite en PHP, mais vous pouvez utiliser n’importe quelle langue, à condition que l’application dispose d’une URL publique et puisse gérer les requêtes http (s) POST.

    Vous pouvez voir le fichier journal généré par cette application ici.

    Remarque: si vous essayez d'implémenter cette application pour vous-même, vous devez vous assurer que l'application est autorisée à écrire dans votre fichier journal. N'oubliez pas non plus que le fichier journal peut grossir rapidement - vous voudrez probablement le vider régulièrement.

        <?php
        // POST won't work for JSON data
        $problem = "No errors";
        try {
            $json    = file_get_contents('php://input');
            $decoded = json_decode($json, true);
        } catch (Exception $e) {
            $problem = $e->getMessage();
        }
        
        // turn notification into pretty printed JSON
        $notification = json_encode($decoded, JSON_PRETTY_PRINT);
        
        
        
        $logEntry = $notification.
        "\nErrors receiving notificatons: ".$problem.
        "\n-------------------------------\n";
        
        // Lastly, tell PHP where it can find the log file and tell PHP to open it
        // and add the string we created earlier to it.
        $logFileLocation = "di-log.txt";
        $fileHandle      = fopen($logFileLocation, 'a') or die("-1");
        fwrite($fileHandle, $logEntry);
        fclose($fileHandle);
        
        // line below is displayed when you browse the app directly
        echo "Dynamic Ingest callback app is running";
        ?>
        

    Dernière mise à jour de la page le 12 juin 2020