Tous les produits
Search
Centre de documentation

Intelligent Speech Interaction:Use the POP API to manage business-specific hotwords

Dernière mise à jour :Sep 10, 2026

Utilisez l'API POP pour créer, récupérer, mettre à jour, supprimer et lister les vocabulaires de mots clés spécifiques à votre activité depuis une application cliente, sans configuration dans la console. Chaque vocabulaire contient un ensemble de mots clés liés à votre activité ainsi que leurs pondérations.

Opérations d'API

Les opérations suivantes utilisent des requêtes HTTPS POST et la version d'API 2018-11-20. Placez les paramètres spécifiques à l'opération dans le corps de la requête. L'exemple utilise CommonRequest du SDK Alibaba Cloud pour Java afin de signer et d'envoyer des requêtes RPC.

Opération

Objectif

CreateAsrVocab

Crée un vocabulaire et renvoie un VocabId pour les opérations ultérieures.

GetAsrVocab

Récupère un vocabulaire et les pondérations de ses mots par ID.

UpdateAsrVocab

Met à jour le nom, la description et l'ensemble complet des pondérations de mots.

DeleteAsrVocab

Supprime un vocabulaire par ID.

ListAsrVocab

Liste les vocabulaires par page, sans les pondérations de mots.

La région est ap-southeast-1 et le point de terminaison est nls-slp.ap-southeast-1.aliyuncs.com.

Limites

Par défaut, chaque compte peut créer jusqu'à 10 vocabulaires de mots clés spécifiques à son activité.

Contrainte

Maximum

Mots clés par vocabulaire

128

Mot clé en chinois uniquement

10 caractères chinois

Mot clé en anglais uniquement

5 mots anglais

Mot clé mixte chinois et anglais

10 caractères chinois et lettres anglaises au total

Les mots clés doivent utiliser l'encodage UTF-8 et ne doivent pas contenir de ponctuation ni de caractères spéciaux. La pondération de chaque mot clé doit être un entier compris entre −6 et 5.

Remarque
  • Une pondération positive augmente la probabilité de reconnaissance du mot clé. Une pondération négative la diminue.

  • Une pondération de −6 supprime autant que possible la reconnaissance du mot clé.

  • La pondération couramment utilisée est 2. Si l'effet est insuffisant, augmentez la pondération de manière appropriée. Des pondérations excessivement élevées peuvent réduire la précision de reconnaissance des autres mots.

Exemple de code

L'exemple crée, récupère, met à jour et liste les vocabulaires, puis supprime uniquement le vocabulaire qu'il a créé. Il ne supprime pas les autres vocabulaires renvoyés par l'opération de liste.

Ajouter des dépendances et configurer les identifiants

L'exemple utilise aliyun-java-sdk-core 3.7.1 et fastjson 1.2.83. Pour la configuration du SDK, consultez Prise en main. Pour l'utilisation générique des requêtes, consultez Appels génériques.

La bibliothèque principale du SDK Alibaba Cloud pour Java doit être en version 3.5.0 ou ultérieure. Les versions 4.0.0 et ultérieures nécessitent également leurs dépendances tierces correspondantes.

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>3.7.1</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>

Définissez ALIYUN_AK_ID et ALIYUN_AK_SECRET respectivement avec l'AccessKey ID et l'AccessKey Secret. Le code lit les identifiants à partir de ces variables d'environnement ; aucun argument de ligne de commande n'est requis.

Appeler l'API

Après la mise à jour, WordWeights contient uniquement watermelon, ce qui démontre un remplacement complet. L'exemple crée un seul vocabulaire, donc le compte doit disposer d'un emplacement de vocabulaire disponible avant l'exécution.

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.profile.DefaultProfile;
import java.util.UUID;

public class AsrVocabPopApiDemo {
    private static final String REGION_ID = "ap-southeast-1";
    private static final String DOMAIN = "nls-slp.ap-southeast-1.aliyuncs.com";
    private final IAcsClient client;

    public AsrVocabPopApiDemo(String accessKeyId, String accessKeySecret) {
        client = new DefaultAcsClient(DefaultProfile.getProfile(
                REGION_ID, accessKeyId, accessKeySecret));
    }

    private CommonRequest request(String action) {
        CommonRequest request = new CommonRequest();
        request.setDomain(DOMAIN);
        request.setProtocol(ProtocolType.HTTPS);
        request.setVersion("2018-11-20");
        request.setMethod(MethodType.POST);
        request.setAction(action);
        return request;
    }

    private JSONObject execute(CommonRequest request) {
        CommonResponse response;
        try {
            response = client.getCommonResponse(request);
        } catch (ClientException e) {
            throw new IllegalStateException("Request failed: " + e.getErrCode());
        }
        JSONObject result = JSONObject.parseObject(response.getData());
        if (response.getHttpStatus() != 200) {
            throw new IllegalStateException("HTTP " + response.getHttpStatus()
                    + ", Code=" + result.getString("Code")
                    + ", Message=" + result.getString("Message")
                    + ", RequestId=" + result.getString("RequestId"));
        }
        return result;
    }

    public String createAsrVocab(String name, String description, JSONObject words) {
        CommonRequest request = request("CreateAsrVocab");
        request.putBodyParameter("Name", name);
        request.putBodyParameter("Description", description);
        request.putBodyParameter("WordWeights", words.toJSONString());
        return execute(request).getString("VocabId");
    }

    public JSONObject getAsrVocab(String vocabId) {
        CommonRequest request = request("GetAsrVocab");
        request.putBodyParameter("Id", vocabId);
        return execute(request).getJSONObject("Vocab");
    }

    public void updateAsrVocab(String vocabId, String name,
            String description, JSONObject words) {
        CommonRequest request = request("UpdateAsrVocab");
        request.putBodyParameter("Id", vocabId);
        request.putBodyParameter("Name", name);
        request.putBodyParameter("Description", description);
        request.putBodyParameter("WordWeights", words.toJSONString());
        execute(request);
    }

    public JSONObject listAsrVocab(int pageNumber, int pageSize) {
        CommonRequest request = request("ListAsrVocab");
        request.putBodyParameter("PageNumber", pageNumber);
        request.putBodyParameter("PageSize", pageSize);
        return execute(request).getJSONObject("Page");
    }

    public void deleteAsrVocab(String vocabId) {
        CommonRequest request = request("DeleteAsrVocab");
        request.putBodyParameter("Id", vocabId);
        execute(request);
    }

    private static String requiredEnv(String name) {
        String value = System.getenv(name);
        if (value == null || value.trim().isEmpty()) {
            throw new IllegalArgumentException("Set environment variable " + name);
        }
        return value;
    }

    public static void main(String[] args) {
        AsrVocabPopApiDemo demo = new AsrVocabPopApiDemo(
                requiredEnv("ALIYUN_AK_ID"), requiredEnv("ALIYUN_AK_SECRET"));
        String name = "example_vocab_" + UUID.randomUUID().toString();
        JSONObject words = new JSONObject();
        words.put("apple", 3);
        words.put("watermelon", 3);

        String vocabId = demo.createAsrVocab(name, "Example vocabulary", words);
        System.out.println("Created vocabulary: " + vocabId);
        try {
            System.out.println("Vocabulary: " + demo.getAsrVocab(vocabId));

            JSONObject updatedWords = new JSONObject();
            updatedWords.put("watermelon", 2);
            demo.updateAsrVocab(vocabId, name, "Updated vocabulary", updatedWords);
            System.out.println("Updated vocabulary: " + demo.getAsrVocab(vocabId));

            JSONObject page = demo.listAsrVocab(1, 10);
            System.out.println("Total vocabularies: " + page.getIntValue("TotalItems"));
        } finally {
            demo.deleteAsrVocab(vocabId);
            System.out.println("Deleted example vocabulary: " + vocabId);
        }
    }
}

Référence des paramètres

Créer un vocabulaire

Appelez CreateAsrVocab pour créer un vocabulaire.

Paramètres de requête

Paramètre

Type

Obligatoire

Description

Name

String

Oui

Le nom du vocabulaire.

WordWeights

String

Oui

Un objet JSON sérialisé sous forme de chaîne. Chaque clé est un mot clé de type String, et chaque valeur est une pondération de type Int. Exemple : {"apple":3,"watermelon":3}.

Description

String

Non

La description du vocabulaire.

Paramètres de réponse

Une requête réussie renvoie le code HTTP 200 avec un objet JSON dans le corps de la réponse.

Paramètre

Type

Description

RequestId

String

L'ID de la requête.

VocabId

String

L'ID du vocabulaire. Utilisez cet ID pour récupérer, mettre à jour ou supprimer le vocabulaire.

Récupérer un vocabulaire

Appelez GetAsrVocab pour récupérer un vocabulaire.

Paramètres de requête

Paramètre

Type

Obligatoire

Description

Id

String

Oui

Le VocabId renvoyé lors de la création du vocabulaire.

Paramètres de réponse

Paramètre

Type

Description

RequestId

String

L'ID de la requête.

Vocab

Object

L'objet vocabulaire, avec les champs suivants.

Champs Vocab

Champ

Type

Description

Id

String

L'ID du vocabulaire, qui est identique au VocabId renvoyé lors de la création.

Name

String

Le nom du vocabulaire.

Description

String

La description du vocabulaire.

Size

Int

La taille du vocabulaire compilé.

Md5

String

La valeur MD5 du vocabulaire compilé.

CreateTime

String

L'heure de création.

UpdateTime

String

L'heure de la dernière mise à jour.

WordWeights

Map

Les mots clés et leurs pondérations.

Mettre à jour un vocabulaire

Appelez UpdateAsrVocab pour mettre à jour le nom, la description et les pondérations des mots. WordWeights remplace tous les mots clés et pondérations existants ; il ne les ajoute pas. Incluez dans la requête tous les mots clés que vous souhaitez conserver.

Paramètres de requête

Paramètre

Type

Obligatoire

Description

Id

String

Oui

L'ID du vocabulaire.

Name

String

Oui

Le nom mis à jour du vocabulaire.

WordWeights

String

Oui

L'ensemble complet des pondérations de mots mises à jour, au même format que lors de la création du vocabulaire.

Description

String

Non

La description mise à jour du vocabulaire.

Paramètres de réponse

Une requête réussie renvoie le code HTTP 200. Le champ RequestId (String) dans la réponse JSON contient l'ID de la requête.

Supprimer un vocabulaire

Appelez DeleteAsrVocab pour supprimer un vocabulaire.

Paramètres de requête

Paramètre

Type

Obligatoire

Description

Id

String

Oui

L'ID du vocabulaire à supprimer.

Paramètres de réponse

Une requête réussie renvoie le code HTTP 200. Le champ RequestId (String) dans la réponse JSON contient l'ID de la requête.

Lister les vocabulaires

Appelez ListAsrVocab pour récupérer les vocabulaires par page. Les résultats sont triés par heure de mise à jour dans l'ordre décroissant. Les mots clés et les pondérations sont omis pour réduire la taille de la réponse.

Paramètres de requête

Paramètre

Type

Obligatoire

Description

PageNumber

Int

Non

Le numéro de page. Par défaut : 1. Doit être supérieur à 0.

PageSize

Int

Non

Le nombre de vocabulaires par page. Par défaut : 10. Définissez ce paramètre sur une valeur comprise entre 10 et 100.

Paramètres de réponse

Paramètre

Type

Description

RequestId

String

L'ID de la requête.

Page

Object

Le résultat paginé, avec les champs suivants.

Champs Page

Champ

Type

Description

Content

List<Vocab>

Un tableau d'objets vocabulaire. Chaque objet possède les champs Vocab décrits dans Récupérer un vocabulaire, à l'exception de WordWeights.

PageNumber

Int

Le numéro de page actuel.

PageSize

Int

Le nombre de vocabulaires par page.

TotalPages

Int

Le nombre total de pages, y compris la dernière page partielle le cas échéant.

TotalItems

Int

Le nombre total de vocabulaires.

Codes d'erreur

Si une requête échoue, le statut HTTP n'est pas 200. Le corps de la réponse JSON contient Code, Message et RequestId. Utilisez le code d'erreur et le message pour résoudre les problèmes liés à la requête.

Code d'erreur

Description et solution

SLP.NOT_FOUND

Le vocabulaire n'existe pas. Vérifiez si l'ID est correct ou si le vocabulaire a été supprimé.

SLP.PARAMETER_ERROR

Un paramètre est invalide. Utilisez Message pour vérifier la taille du vocabulaire, la longueur des mots clés, les pondérations ou d'autres paramètres.

SLP.EXCEED_LIMIT

Le nombre de vocabulaires dépasse la limite. Par défaut, chaque compte peut créer jusqu'à 10 vocabulaires.

SLP.ASR_VOCAB_ERROR

Une erreur de vocabulaire s'est produite, telle qu'un échec de compilation. Vérifiez le contenu soumis en vous basant sur Message.

MissingName

Le paramètre obligatoire Name est manquant.

MissingWordWeights

Le paramètre obligatoire WordWeights est manquant.

Code d'erreur de pagination

Description et solution

SLP.PAGE_NUMBER_INVALID

Le numéro de page est invalide. Définissez PageNumber sur un entier supérieur à 0.

SLP.PAGE_SIZE_INVALID

La taille de page est invalide. Définissez PageSize sur un entier compris entre 10 et 100.