Risoluzione dei problemi

Abilita Cloud Logging per l'agente

Attiva Cloud Logging per l'agente. Questo è essenziale per acquisire dati e diagnosticare i problemi nelle conversazioni reali.

Raccogli gli ID conversazione

Quando si verifica un comportamento imprevisto, raccogli gli ID conversazione di Dialogflow. Questi ID, che si trovano nella cronologia delle conversazioni, consentono di tracciare il percorso di esecuzione di una conversazione ed esaminare interazioni specifiche.

La chiamata API riceve l'errore di autorizzazione negata

Problema

Ricevuta risposta PERMISSION_DENIED per la chiamata API.

Soluzione

Assicurati di aver configurato correttamente l'autenticazione e i ruoli (Dialogflow CX, Dialogflow ES). In particolare, assicurati di aver svolto le seguenti operazioni:

  • Hai creato un account di servizio e non l'hai eliminato accidentalmente.
  • Aver fornito al account di servizio un ruolo che concede l'autorizzazione a chiamare il metodo scelto.
  • Scaricato il file della chiave privata del account di servizio.
  • Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS sul file della chiave privata.

La chiamata API menziona un progetto sconosciuto

Problema

Ricevuto errore Dialogflow API has not been used in project 32555940559 per la chiamata API.

Soluzione

Assicurati di aver svolto le seguenti operazioni:

  • Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS (vedi PERMISSION_DENIED).
  • Fornito l'ID progetto corretto alla chiamata API.

La chiamata API riceve un errore di credenziali di autenticazione non valide

Problema

Risposta Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. ricevuta per la chiamata API.

Soluzione

Ciò potrebbe essere dovuto alla creazione manuale delle credenziali con la libreria client, specificando una regione non predefinita. Per indicazioni, consulta uno dei seguenti articoli:

La risposta alla chiamata API richiede il passaggio a un host diverso

Problema

Ricevuta risposta Please switch to 'REGION-dialogflow.googleapis.com' to access resources located in 'REGION' per la chiamata API, dove REGION è un ID regione specifico.

Soluzione

Questo accade quando specifichi la regione nella richiesta, ma non l'endpoint. Per indicazioni, consulta uno dei seguenti articoli:

Campi mancanti nella risposta alla chiamata API

Problema

Alcuni campi mancano nella risposta dell'API.

Soluzione

Se ti aspetti un valore numerico per un campo specifico nella risposta dell'API, il campo potrebbe essere assente dalla risposta se il valore restituito è 0.

Per saperne di più sul comportamento dei valori predefiniti (inclusi i valori non numerici), consulta:

Impossibile eliminare il progetto a causa di un blocco

Problema

Quando provi a eliminare un progetto Google Cloud , ricevi una notifica che indica che il progetto non può essere eliminato perché contiene blocchi e uno di questi è correlato a Dialogflow ES.

Soluzione

  1. Assicurati che l'agente Dialogflow ES associato al progetto non sia più necessario. Se ricevi una notifica che indica che l'agente non esiste, significa che è già stato eliminato.

    Console di Dialogflow ES

    Apri https://dialogflow.cloud.google.com/#/agent/project-id/intents.

    Tieni presente che questo link è diverso da quello nella finestra di dialogo di eliminazione del progetto Google Cloud .

    API Dialogflow

    Utilizza il metodo search del tipo agent.

  2. Ottieni il nome del blocco.

    gcloud

    Utilizza il comando gcloud alpha resource-manager liens list, come descritto nella documentazione Elenco dei blocchi su un progetto.

    Explorer API

    Utilizza il riquadro Prova questa API nella pagina Metodo: liens.list:

    • Compila il campo parent, come suggerito nella descrizione del parametro.
    • Fai clic su Esegui.
  3. Elimina il blocco.

    gcloud

    Utilizza il comando gcloud alpha resource-manager liens delete LIEN_NAME, come descritto nella documentazione Rimozione dei blocchi da un progetto.

    Explorer API

    Utilizza il riquadro Prova questa API nella pagina Metodo: liens.delete:

    • Compila il campo name con il nome del blocco ottenuto nel passaggio 2.
    • Fai clic su Esegui.
  4. Chiudi il progetto.

Il webhook Dialogflow CX non riesce con l'errore di scadenza superata

Problema

Un webhook chiamato da Dialogflow CX potrebbe non riuscire con questo messaggio di errore:

Webhook call failed. Error: DEADLINE_EXCEEDED

Ciò può accadere perché la chiamata webhook supera il limite di timeout del webhook. Ecco i possibili motivi per cui la chiamata webhook supera il limite di timeout:

  • Stai tentando di attivare un intent inesistente.
  • Un problema di avvio a freddo con il backend del webhook (ad esempio Cloud Functions).
  • Il webhook chiama altri servizi, aumentando il tempo di risposta.
  • Nessuna connessione tra l'agente e il backend del webhook (ad esempio, bilanciatore del carico configurato in modo errato).
  • Policy dell'organizzazione che impedisce l'esecuzione del traffico in entrata o dei metodi Dialogflow.

Soluzione temporanea

Per impostazione predefinita, un webhook ha un limite di timeout di 5 secondi. Puoi aumentare il limite di timeout del webhook quando crei o modifichi la risorsa webhook, in modo da concedere più tempo al webhook per rispondere.

La console non riesce a configurare il progetto

Problema

È stato ricevuto l'errore Failed to set up GCP project durante la creazione di un agente con la console.

Soluzione

Potresti non disporre delle autorizzazioni per creare Google Cloud progetti. Verifica se puoi creare un progetto Google Cloud direttamente dalla console. Se non riesci a creare un progetto, segui i consigli forniti nel messaggio di errore.

Riferimento al parametro di sessione mostrato nella risposta

Problema

Le risposte restituite da Dialogflow includono i riferimenti ai parametri anziché i valori dei parametri. Ad esempio:
Hello, $session.params.customer_name

I parametri non verranno risolti e il riferimento al parametro verrà mostrato se il parametro non viene trovato nella sessione corrente o se non viene utilizzato in base al suo tipo.

Soluzione

Questo problema potrebbe verificarsi perché il parametro utilizzato non è incluso nella conversazione, contiene un errore di battitura o è di un tipo diverso da quello utilizzato.

La console non riesce a creare l'agente se l'API non è stata abilitata

Problema

Ricevuto l'errore Dialogflow API has not been enabled for the project. Code: FAILED_PRECONDITION durante la creazione di un agente con la console.

Soluzione

Segui i passaggi di configurazione per abilitare l'API Dialogflow.

Quando si tenta di accedere alla console dall'account dell'organizzazione, viene visualizzato un errore del servizio

Problema

Hai ricevuto l'errore You don't have access to this service durante il tentativo di accedere alla console dal tuo account dell'organizzazione.

Soluzione

Contatta l'amministratore di sistema della tua organizzazione e verifica che le impostazioni della tua organizzazione forniscano l'accesso alla console. In caso contrario, verifica se il tuo account di cui è stata eseguita la migrazione da un'altra organizzazione è stato contrassegnato come limitato da Google. È probabile che il problema sia questo se altri utenti della tua organizzazione possono accedere alla console, ma tu no.

In alternativa, contatta l'assistenza per ricevere aiuto.

Impossibile esportare l'agente in formato JSON a causa di un flusso mancante

Problema

L'esportazione dell'agente come byte non elaborati viene completata correttamente, ma l'esportazione dell'agente in formato JSON non riesce e viene visualizzato un messaggio di errore simile al seguente:

Flow 'projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID/flows/FLOW_ID' does not exist
in the agent

Questo problema può essere causato da uno scenario di test che fa riferimento a un flusso eliminato.

Soluzione

Per risolvere il problema, esplora gli scenari di test inutilizzati per verificare se il flusso a cui fa riferimento il messaggio di errore viene utilizzato in uno scenario di test, quindi elimina gli scenari di test confermati.

Connettività del gateway telefonico

Problema

Quando utilizzi un gateway telefonico, ricevi un segnale di occupato o la chiamata viene interrotta.

Soluzione

Esistono quote e limiti per questa funzionalità. Se ricevi un segnale di occupato o la chiamata viene interrotta, potresti aver superato la tua quota.

Errore RESOURCE_EXHAUSTED durante il tentativo di creare un nuovo numero di telefono

Problema

Quando provi a creare un nuovo numero di telefono in Dialogflow CX, Dialogflow ES o Agent Assist, viene restituito un errore RESOURCE_EXHAUSTED.

Soluzione

Questo errore indica che hai superato il limite di numeri di telefono per progetto. Per creare un nuovo numero di telefono, elimina i numeri di telefono inutilizzati associati al tuo progetto finché non scendi al di sotto del limite.

Se hai creato numeri di telefono in Dialogflow CX Phone Gateway o Dialogflow ES Phone Gateway, puoi eliminarli nella console. Tieni presente che l'eliminazione dell'agente senza l'eliminazione del numero di telefono non comporta l'eliminazione del numero di telefono associato.

In alternativa, puoi utilizzare l'API seguendo questi passaggi.

Passaggio 1: Identifica tutti i numeri di telefono associati al tuo progetto

Per identificare i numeri di telefono associati al tuo progetto, utilizza il metodo API projects.phoneNumbers/list o projects.locations.phoneNumbers.list per tutte le regioni in cui potresti aver creato numeri di telefono.

  • Per la regione global, utilizza il seguente comando:

    curl -X GET \
    -H "Authorization: Bearer "$(gcloud auth print-access-token) \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Content-Type: application/json; charset=utf-8" \
    https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/global/phoneNumbers
    
  • Per altre regioni, devi specificare la regione in due punti:

    curl -X GET \
    -H "Authorization: Bearer "$(gcloud auth print-access-token) \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Content-Type: application/json; charset=utf-8" \
    https://REGION_ID-dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/REGION_ID/phoneNumbers
    

Passaggio 2: (Facoltativo) Identifica gli agenti associati ai profili di conversazione

Ottenere l'ID agente Dialogflow CX associato al numero di telefono tramite il profilo di conversazione potrebbe aiutarti a identificare se l'agente è ancora in uso e se il numero di telefono è ancora necessario. Puoi farlo utilizzando il metodo API projects.conversationProfiles/get. Puoi trovare gli ID dei profili di conversazione nelle risposte ai comandi che hai eseguito nel passaggio 1.

  • Per la regione global, utilizza il seguente comando:

    curl -X GET \
    -H "Authorization: Bearer "$(gcloud auth print-access-token) \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Content-Type: application/json; charset=utf-8" \
    https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/global/conversationProfiles/CONVERSATION_PROFILE_ID
    
  • Per altre regioni, specifica la regione in due punti:

    curl -X GET \
    -H "Authorization: Bearer "$(gcloud auth print-access-token) \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Content-Type: application/json; charset=utf-8" \
    https://REGION_ID-dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/locations/REGION_ID/conversationProfiles/CONVERSATION_PROFILE_ID
    

Puoi trovare l'agente in base al suo ID nella console Dialogflow CX utilizzando l'opzione Cerca nella pagina Visualizza tutti gli agenti.

Per Dialogflow ES, un progetto può essere associato solo a un massimo di cinque agenti e un agente Dialogflow ES può essere associato a un numero di telefono. Puoi aprire l'agente nella console Dialogflow ES tramite https://dialogflow.cloud.google.com/#/editAgent/PROJECT_ID/intents.

Se non viene trovato alcun agente, puoi comunque eliminare il numero di telefono se hai la certezza che non sia più necessario.

Passaggio 3: Elimina i numeri di telefono inutilizzati

Per eliminare i numeri di telefono che non sono più necessari, utilizza il metodo API projects.phoneNumbers/delete o projects.locations.phoneNumbers.delete. Puoi trovare gli ID dei numeri di telefono nella risposta ai comandi eseguiti nel passaggio 1.

  • Per la regione global, utilizza il seguente comando:

    curl -X DELETE \
        -H "Authorization: Bearer "$(gcloud auth print-access-token) \
        -H "X-Goog-User-Project: PROJECT_ID" \
        -H "Content-Type: application/json; charset=utf-8" \
        https://dialogflow.googleapis.com/v2beta1/PHONE_NUMBER_ID
    
  • Per altre regioni, specifica la regione:

    curl -X DELETE \
        -H "Authorization: Bearer "$(gcloud auth print-access-token) \
        -H "X-Goog-User-Project: PROJECT_ID" \
        -H "Content-Type: application/json; charset=utf-8" \
        https://REGION_ID-dialogflow.googleapis.com/v2beta1/PHONE_NUMBER_ID
    

Nessuna risposta da Dialogflow CX Messenger

Problema

Nessuna risposta dell'agente per le interazioni di Dialogflow CX Messenger.

Soluzione

Se non ricevi risposte da Dialogflow CX Messenger, assicurati che la fatturazione sia abilitata nel progetto e che l'API Dialogflow sia abilitata nel progetto. Consulta le istruzioni di configurazione.

Valore parametro corrispondente, ma non sinonimo dell'entità

Problema

  • Caso generale: un valore parametro viene estratto in fase di runtime, anche se l'entità corrispondente al parametro non contiene il valore corrispondente come sinonimo.
  • Un caso più specifico: dopo che un sinonimo è stato eliminato da un'entità e l'agente è stato riaddestrato, questo sinonimo viene comunque estratto come valore parametro per questa entità.

Soluzione

  1. Utilizza l'opzione di ricerca per verificare se il valore corrispondente potrebbe essere presente nell'agente come entità implicita (Dialogflow CX, Dialogflow ES). Trova tutti gli intent che hanno annotazioni con questo parametro e questa entità.
  2. Correggi le annotazioni assicurandoti che nessuna di queste annotazioni venga applicata al testo che rappresenta il valore corrispondente indesiderato.
  3. Testa l'agente in fase di runtime per verificare se il problema è stato risolto.
  4. Se il problema persiste, assicurati che le opzioni Espansione automatica e Corrispondenza fuzzy non siano selezionate nelle impostazioni avanzate delle entità e testa nuovamente l'agente.

Il bot vocale salta alcune risposte

Problema

Per un agente progettato sia per il testo che per la voce, il bot vocale non legge alcune risposte.

Soluzione

Se per un determinato turno di conversazione è definita almeno una risposta di testo audio di output, assicurati che l'opzione di testo audio di output sia presente in modo coerente in tutte le risposte di fulfillment e webhook dell'agente in tutti i passaggi di questo turno di conversazione.

I tag SSML non hanno effetto

Problema

I tag SSML sono definiti nel fulfillment dell'agente, ma il bot vocale legge il testo sintetizzato senza effetti SSML.

Soluzione

Assicurati che sia presente una sola coppia <speak></speak> per ogni scheda di risposta nella console Dialogflow o per ogni oggetto del messaggio di risposta se le risposte vengono fornite dall'API o dal webhook.

L'agente vocale pronuncia lo zero come la lettera O

Problema

Per un agente progettato per la voce, l'agente vocale legge gli zeri come la lettera O anziché come zero.

Soluzione

  1. Modifica L'agente dice per utilizzare l'opzione di dialogo Output audio text.
  2. Seleziona la casella di controllo SSML.
  3. Racchiudi il testo in un tag SSML:
      <speak>
        <say-as interpret-as='verbatim'>YOUR_TEXT</say-as>
      </speak>
  4. Salva.

Ad esempio, gli zeri dei numeri di carta di credito verranno pronunciati come zeri:

   <speak>
      <say-as interpret-as='verbatim'>5177 7702 8500 4578</say-as>
   </speak>

Pronuncia sintetizzata imprevista

Problema

La pronuncia sintetizzata delle risposte dell'agente (ad es. nomi propri, acronimi) non è quella prevista.

Soluzione

Per garantire pronunce particolari per parole non comunemente note, utilizza il tag SSML say-as o phoneme nelle risposte dell'agente.

È stato raggiunto il numero massimo di passaggi di esecuzione della macchina a stati consentiti

Problema

Hai ricevuto il seguente messaggio di errore nella console Dialogflow CX o nei log quando hai inviato richieste di runtime all'agente:

You have reached the maximum allowed state machine execution steps. You may consider simplifying your agent/flow design. Current execution steps are: [<array_of_objects>]

L'array nel messaggio di errore contiene un elenco di passaggi di esecuzione per la richiesta. L'elenco potrebbe essere incompleto se il numero di passaggi è troppo elevato.

Soluzione

Questo messaggio di errore di solito indica che il numero di transizioni per un singolo turno di conversazione è troppo elevato. Un esempio comune è la transizione alla stessa pagina, che crea un loop infinito.

Per risolvere il problema:

  1. Copia l'array JSON dal messaggio di errore.
  2. (Facoltativo) Formatta l'array copiato come JSON per una migliore leggibilità. Se il messaggio di errore è troncato, cerca l'ultimo oggetto "Step", elimina l'oggetto incompleto e la virgola precedente e aggiungi una parentesi quadra di chiusura dell'array prima di convalidare e formattare il JSON.
  3. Osserva i valori "TriggeredTransitionRouteId" e "TargetPage" per ogni passaggio. In caso di loop infinito, i campi "TriggeredTransitionRouteId" e "TargetPage" hanno valori ripetuti per la maggior parte dei passaggi.
  4. Modifica il design dell'agente per rimuovere le transizioni in loop infinito o per ridurre il numero di transizioni per un singolo turno di conversazione.

La corrispondenza mediante espressione regolare è troppo generica

Problema

È stato ricevuto un errore Regular expression match is too broad durante la creazione di un'entità regexp (Dialogflow CX, Dialogflow ES).

Soluzione

Valuta il seguente approccio:

  • Utilizza ^ e $ nell'espressione regolare per indicare rispettivamente l'inizio e la fine del testo.
  • Utilizza l'entità regexp con un parametro obbligatorio (Dialogflow CX, Dialogflow ES).
  • Definisci i prompt dei parametri obbligatori per chiedere all'utente finale di fornire solo il valore dell'entità senza parole circostanti.

Caratteri non alfanumerici indesiderati inseriti dal riconoscimento vocale

Problema

Quando si tenta di trovare una corrispondenza con caratteri alfanumerici, il riconoscimento vocale inserisce caratteri non alfanumerici indesiderati (spazi, trattini e così via), il che impedisce la corrispondenza con l'entità.

Soluzione

  1. Se utilizzi entità di sistema per la corrispondenza dei numeri, valuta la possibilità di utilizzare entità regexp (Dialogflow CX, Dialogflow ES).
  2. Segui tutti i consigli della sezione Riconoscimento vocale alfanumerico impreciso da parte delle entità regexp.
  3. Per l'abbinamento dei numeri utilizzando le integrazioni di telefonia, prendi in considerazione un'opzione DTMF, oltre al riconoscimento vocale.

Trascrizioni vuote per gli input vocali

Problema

Le risposte di Dialogflow per gli input vocali restituiscono trascrizioni vuote. Le richieste vengono gestite come nessun input o nessuna corrispondenza.

Soluzione

Ascolta la registrazione audio per verificare che contenga parlato.

Assicurati che l'adattamento del parlato sia abilitato nelle impostazioni dell'agente (Dialogflow CX, Dialogflow ES).

Se l'attivazione dell'adattamento vocale non aiuta, sperimenta i seguenti modelli vocali in una configurazione non di produzione e utilizza quello che restituisce i risultati migliori:

  • latest_short
  • phone_call
  • command_and_search

Per le lingue diverse dall'inglese, consulta i modelli vocali supportati nella documentazione relativa alle lingue supportate da Speech-to-Text.

Il modo in cui specifichi un modello vocale dipende da come configuri le interazioni con Dialogflow.

  • Per le richieste API, fornisci il nome del modello nel campo model in InputAudioConfig (Dialogflow CX, Dialogflow ES).

  • Se utilizzi Phone Gateway (Dialogflow CX, Dialogflow ES), puoi aggiornare il modello vocale nel profilo di conversazione creato da Dialogflow quando hai attivato l'integrazione:

    1. Recupera l'ID del profilo di conversazione:

      • Utilizza il metodo conversationProfiles.list per recuperare tutti i profili di conversazione collegati al tuo progetto.
      • Trova il profilo di conversazione che vuoi aggiornare e copia il valore del campo name.

      Per Dialogflow CX Phone Gateway, il nome visualizzato del profilo di conversazione è disponibile nelle impostazioni di integrazione. Per Dialogflow ES Phone Gateway, il nome visualizzato del profilo di conversazione corrisponde al nome dell'agente in cui è stata abilitata l'integrazione.

      Se hai più profili di conversazione con lo stesso nome visualizzato, verifica l'ID agente nel campo automatedAgentConfig della risposta del metodo conversationProfiles.list.

    2. Utilizza il metodo API conversationProfiles.patch per aggiornare il campo model in SpeechToTextConfig.

  • Per le integrazioni di Contact Center AI, chiedi al tuo integratore di telefonia come aggiornare il modello vocale per l'integrazione o per le singole richieste.

Informazioni sugli errori di loop del playbook

Problema

Quando colleghi i playbook, viene visualizzato l'errore Playbook <playbookID> caused loop in playbook routes.

Soluzione

Un loop può verificarsi se tenti di indirizzare a un playbook "antenato", ovvero uno che ha chiamato direttamente o indirettamente quello corrente. Per risolvere il problema, verifica che il routing del playbook sia unidirezionale e non torni a un playbook principale nello stesso percorso di conversazione.

Errore di schermata vuota "Le dimensioni del file superano i 2 MB" durante il confronto delle versioni dell'agente

Problema

Quando provi a confrontare due versioni diverse dell'agente, lo schermo diventa vuoto con il messaggio di errore:

File size exceeds 2MB

Questo problema è dovuto al fatto che uno dei file supera i 2 MB.

Soluzione

Per confrontare le versioni dell'agente in cui uno dei file supera i 2 MB, è consigliabile utilizzare il metodo API compareVersion.

Riconoscimento vocale alfanumerico impreciso da parte delle entità regexp

Problema

Sono state ricevute trascrizioni imprecise per gli input vocali di caratteri alfanumerici progettati per essere abbinati a un'entità regexp (Dialogflow CX, Dialogflow ES).

Soluzione

  1. Assicurati che l'adattamento del parlato sia abilitato nelle impostazioni dell'agente (Dialogflow CX, Dialogflow ES).
  2. Assicurati che almeno una voce dell'entità soddisfi tutti i requisiti delle voci regex (Dialogflow CX, Dialogflow ES).
  3. Per pattern specifici, utilizza le espressioni regolari più specifiche. Ad esempio, per un valore alfanumerico che inizia con due lettere seguite da cinque cifre, utilizza [a-zA-Z]{2}\d{5} anziché [a-zA-Z0-9]{7}.
  4. Assicurati che l'entità regexp consenta la corrispondenza di caratteri non alfanumerici (spazi, trattini e così via) che potrebbero essere inseriti dal riconoscimento vocale. Per soddisfare il requisito 2 di questo elenco, crea più voci di entità: una voce per soddisfare i requisiti 2 di questo elenco e un'altra per tenere conto dei caratteri non alfanumerici. Ad esempio, per trovare una corrispondenza con cinque cifre e consentire caratteri non alfanumerici:
     \d{5}
     (\d[^a-zA-Z0-9]*){5}
    
  5. Assicurati che l'agente rispetti il requisito di definizione dei parametri (Dialogflow CX, Dialogflow ES).

    Esempio per Dialogflow CX

    Parametro obbligatorio in Dialogflow CX

    Esempio per Dialogflow ES

    Parametro obbligatorio in Dialogflow ES
  6. Assicurati che l'agente segua il requisito di annotazione delle frasi di addestramento (Dialogflow CX, Dialogflow ES).

    Esempio per Dialogflow ES

    Nessuna annotazione nelle frasi di addestramento in Dialogflow ES
  7. Assicurati che i test seguano le linee guida per i test (Dialogflow CX, Dialogflow ES).
  8. Per rimuovere i caratteri non alfanumerici che potrebbero essere stati inseriti dal riconoscimento vocale, utilizza quanto segue:
  9. Controlla le limitazioni dell'adattamento del parlato (Dialogflow CX, Dialogflow ES).

Il webhook non va a buon fine con l'errore 403 Forbidden per Cloud Run Functions (2ª generazione.)

Problema

Quando chiami un webhook ospitato su Cloud Run Functions (2ª generazione.) da Dialogflow CX, il webhook non va a buon fine con un errore HTTP 403 Forbidden o il seguente messaggio nei log della funzione:

The request was not authenticated. Either allow unauthenticated invocations or set the proper Authorization header.

Causa

A differenza di Cloud Run Functions (1ª generazione.), che dispone di autenticazione integrata per i webhook di Dialogflow CX, Cloud Run Functions (2ª generazione.) viene eseguito su Cloud Run e richiede autorizzazioni IAM Invoker. Se l'account dell'agente di servizio Dialogflow CX non dispone dell'autorizzazione per richiamare il servizio Cloud Run, le chiamate vengono rifiutate con un errore HTTP 403. Per informazioni dettagliate sulle differenze tra le versioni, consulta il confronto tra le versioni di Cloud Run Functions.

Risoluzione

Concedi il ruolo Cloud Run Invoker all'agente di servizio Dialogflow CX:

  1. Identifica il numero di progetto PROJECT_ID.
  2. Nella console Google Cloud vai alla pagina IAM.
  3. Seleziona la casella di controllo Includi concessioni di ruoli fornite da Google.
  4. Individua l'account dell'agente di servizio Dialogflow CX: service-PROJECT_NUMBER@gcp-sa-dialogflow. (sostituisci PROJECT_NUMBER con il numero del tuo progetto).
  5. Assegna il ruolo Cloud Run Invoker (roles/run.invoker) all'account dell'agente di servizio.
  6. In alternativa, configura la funzione Cloud Run per consentire le chiamate non autenticate, se consentito dalle policy dell'organizzazione.

Errore di integrazione di GitHub: risorsa non accessibile tramite token di accesso personale

Problema

Quando tenti di eseguire il push delle modifiche dell'agente su GitHub o di ripristinarle da GitHub nella console Dialogflow CX, l'operazione non va a buon fine e viene visualizzato il seguente errore:

Received an error from GitHub: Resource not accessible by personal access token

Causa

Il token di accesso personale configurato per la connessione GitHub non dispone delle autorizzazioni del repository richieste per eseguire il push o il ripristino dei file dell'agente.

Risoluzione

Aggiorna le autorizzazioni per il token di accesso personale GitHub:

  • Token di accesso personali granulari:
    1. In GitHub, vai alle impostazioni del token di accesso personale.
    2. In Repository permissions (Autorizzazioni repository), imposta Contents (Contenuti) su Read and write (Lettura e scrittura).
    3. Verifica che l'opzione Metadati sia impostata su Sola lettura (selezionata automaticamente quando viene concessa l'autorizzazione Contenuti).
  • Token di accesso personale classici:
    1. Assicurati che per il token sia selezionato l'ambito repo.

Inoltre, verifica che il repository e il branch specificati esistano e che l'account associato al token abbia accesso in scrittura al repository.

Progettazione per conversazioni controllate

Crea il tuo agente con percorsi di conversazione chiaramente definiti. Assicurati che l'agente possa richiedere le informazioni necessarie per soddisfare i requisiti dell'utente. Evita un ambito di conversazione eccessivamente ampio, che può portare a un comportamento imprevedibile.

Analisi dei log

Gli input e gli output di playbook, strumenti e datastore vengono acquisiti nei log. Utilizza gli ID conversazione raccolti per seguire la catena di chiamate e identificare dove l'esecuzione è andata storta.

Sperimenta con i prompt

Se un insieme specifico di istruzioni non funziona come previsto, prova a riformularlo. In alternativa, puoi utilizzare Gemini per generare prompt (meta-prompting). Questo approccio iterativo può aiutarti a trovare la formulazione ottimale per il tuo caso d'uso.

Fornisci informazioni complete all'assistenza

Quando apri una richiesta di assistenza con l'assistenza Cloud, includi gli ID conversazione pertinenti e i log raccolti durante l'indagine. Queste informazioni sono fondamentali per eseguire il debug dei problemi in modo efficiente.