Slack
Ecco cosa accade quando si utilizza Slack come canale per l'assistente digitale (o competenza standalone).
- Slack ospita l'assistente digitale tramite un'app Slack che funge da intermediario.
- Gli utenti effettuano una chat con l'assistente digitale mediante l'app Slack nell'interfaccia utente di Slack.
Vedere Creazione di applicazioni Slack per la documentazione per sviluppatori di Slack per le applicazioni Slack.
Di seguito sono riportati i passi da seguire per creare un canale Slack per Digital Assistant.
Le abilità e gli assistenti digitali esposti tramite i canali Slack possono essere inclusi anche nelle chat di gruppo. Vedere Chat di gruppo.
Passo 1: ottenere un'area di lavoro Slack
Per rendere disponibile l'assistente digitale (o il bot standalone) in Slack, è necessario disporre di un'area di lavoro Slack in cui si dispone delle autorizzazioni necessarie per creare un'applicazione Slack.
Se non si dispone di un'area di lavoro di questo tipo, è possibile crearne una propria. Vedere la pagina Crea una nuova area di lavoro di Slack.
Passo 2: Creare un'app Slack
-
Andare alla pagina Applicazioni personali di Slack.
-
Fare clic su Crea un'applicazione Slack, quindi selezionare Da zero.
-
Nella finestra di dialogo Crea un'applicazione Slack, compilare i campi Nome applicazione e Area di lavoro Slack per lo sviluppo e fare clic su Crea applicazione.
Una volta creata l'applicazione, viene visualizzata la pagina Informazioni di base.
-
Scorrere fino alla sezione Credenziali applicazione della pagina e annotare i valori dei campi Client ID, Client Secret e Signing Secret.
Queste credenziali sono necessarie quando si imposta il canale in Digital Assistant.
Passo 3: aggiungere ambiti OAuth per l'app Slack.
Aggiungere gli ambiti OAuth per le autorizzazioni che si desidera concedere al bot e all'utente.
-
Nella navigazione a sinistra della console Web per l'applicazione Slack, nella sezione Funzioni, selezionare OAuth e autorizzazioni.
-
Scorrere fino alla sezione Scope della pagina.
-
Gli ambiti rientrano nelle seguenti categorie:
- Ambiti token bot
- Ambiti token utente
-
Nella sezione Ambiti token bot aggiungere gli ambiti che corrispondono alle autorizzazioni a livello di bot che si desidera consentire. Sono richiesti almeno gli ambiti del token bot seguenti:
chat:write
im:history
users:read
A seconda delle caratteristiche dello skill, potrebbero essere necessari altri ambiti. Ad esempio, per l'utilizzo degli allegati sono necessari gli ambiti riportati di seguito.
files:read
files:write
-
Nella sezione Ambiti token utente aggiungere gli ambiti che corrispondono alle autorizzazioni a livello utente che si desidera consentire. Sono necessari gli ambiti del token utente seguenti:
files:read
files:write
A seconda dei requisiti del bot, potrebbe essere necessario aggiungere altri ambiti.
Passo 4: aggiungere l'app all'area di lavoro
-
Scorrere indietro fino alla parte superiore della pagina OAuth & Autorizzazioni.
-
Nella sezione OAuth URL token e reindirizzamento fare clic su Installa nell'area di lavoro.
Verrà visualizzata una pagina che mostra cosa l'app sarà in grado di fare.
-
Nella parte inferiore della pagina fare clic su Consenti.
Dopo aver completato questo passo, è possibile visualizzare l'applicazione nell'area di lavoro Slack selezionando Applicazioni nella barra di navigazione a sinistra.
Passo 5: Creare un canale in Digital Assistant
-
In Digital Assistant, fare clic sui canali nel menu a sinistra, quindi scegliere Utenti.
-
Fare clic su + Canale per aprire la finestra di dialogo Crea canale.
-
Dai un nome al tuo canale.
-
Scegliere Slack come tipo di canale.
-
Inserire i valori per ID client, Segreto client e Segreto firma ottenuti durante la creazione dell'applicazione Slack.
È possibile recuperare questi valori dalla pagina Impostazioni dell'applicazione Slack.
- Se si sta impostando il canale per le chat di gruppo e si desidera che i messaggi vengano inviati al gruppo senza menzionare il nome dell'applicazione Slack, selezionare Consenti messaggi senza menzione applicazione nella chat di gruppo.
-
Fare clic su Crea.
-
Nella pagina Canali, copiare l'URL WebHook e incollarlo in un punto appropriato nel sistema. Avrai bisogno di questo per completare l'impostazione dell'app Slack.
-
Fare clic su
e selezionare l'assistente digitale o lo skill che si desidera associare al canale.
-
Nell'elenco a discesa Invia a selezionare l'assistente digitale o lo skill che si desidera associare al canale.
- Accendere il controllo Channel Enabled.
Passo 6: Configurare l'URL Webhook nell'app Slack.
-
Nella navigazione a sinistra della console Web per l'applicazione Slack, selezionare Interattività e collegamenti.
-
Accendere lo switch Interattività.
-
In entrambi i campi URL richiesta e URL caricamento opzioni incollare l'URL del webhook generato al momento della creazione del canale in Digital Assistant.
-
Fare clic su Salva modifiche.
-
Nella navigazione a sinistra, selezionare OAuth & Permissions.
-
Nel campo Redirect URL fare clic su Add New Redirect URL.
-
Incollare l'URL del webhook, aggiungere
/authorizeV2
e fare clic su Aggiungi. -
Fare clic su Save URLs.
-
Nella navigazione a sinistra selezionare Home applicazione.
-
Nella sezione Presenza dell'applicazione in Slack, attivare lo switch Mostra sempre il bot come online.
-
Scorrere la pagina fino alla sezione Mostra schede e attivare l'opzione Scheda Messaggi.
-
Selezionare la casella di controllo Consenti agli utenti di inviare comandi e messaggi della barra multifunzione dalla scheda Messaggi.
-
Nella navigazione a sinistra selezionare Sottoscrizioni evento.
-
Impostare lo switch Enable Events su ON.
-
Nel campo URL richiesta incollare l'URL del webhook.
Dopo aver immesso l'URL, accanto all'etichetta URL richiesta deve essere visualizzata un'etichetta verde Verificato.
-
Espandere la sezione Esegui sottoscrizione agli eventi bot della pagina, fare clic su Aggiungi evento utente bot e aggiungere l'evento seguente:
message.im
- Se si prevede di rendere disponibile il bot nelle chat di gruppo, aggiungere anche gli eventi riportati di seguito.
app_mention
message.mpim
message.channels
-
Fare clic su Salva modifiche.
-
Nella navigazione a sinistra selezionare Manage Distribution.
-
Fare clic sul pulsante Aggiungi a Slack, quindi su Consenti.
A questo punto, si dovrebbe ricevere il messaggio È stata installata correttamente l'applicazione in Slack.
Passo 7: eseguire il test del bot in Slack.
Una volta completata la configurazione del canale Slack e della messaggistica, puoi testare il bot (assistente digitale o abilità) in Slack.
-
Aprire l'area di lavoro Slack in cui è stata installata l'applicazione.
-
Nella barra di navigazione a sinistra, selezionare l'applicazione associata all'assistente digitale.
- Nel campo Messaggio immettere il testo per iniziare a comunicare con l'assistente digitale.
Se nel client Slack viene visualizzato il messaggio "L'invio di messaggi a questa applicazione è stato disattivato", provare a riavviare l'applicazione Slack. Se il campo non viene abilitato, assicurarsi di aver concesso tutte le autorizzazioni necessarie.
App Slack "nuove" e "classiche"
A partire dalla versione 20.6 di Oracle Digital Assistant, la creazione dei canali Slack si basa su un flusso OAuth aggiornato nelle app Slack. Questo flusso aggiornato abilita ambiti più granulari. Le istruzioni per l'impostazione del canale in questa guida si basano sul nuovo flusso OAuth.
Per informazioni dettagliate sul flusso OAuth aggiornato, vedere https://api.slack.com/authentication/oauth-v2.
Tutti i canali esistenti creati prima di Digital Assistant 20.6 e basati su app Slack "classiche" continueranno a funzionare. Tuttavia, è consigliabile eseguire la migrazione delle applicazioni Slack classiche alle nuove applicazioni Slack. Per ulteriori informazioni, vedere https://api.slack.com/authentication/migration.
Funzioni supportate
I canali Slack in Digital Assistant supportano le seguenti funzionalità:
- testo (sia di invio che di ricezione)
- immagini (sia di invio che di ricezione)
- file (supporto parziale per l'invio, supporto completo per la ricezione)
- emoji (supporto parziale per l'invio, supporto completo per la ricezione)
- collegamenti
- postback
- proprietà personalizzate
- componenti della giostra (ma resi verticalmente anziché orizzontalmente)
- elencare i componenti
Slack consente di formattare i messaggi utilizzando il markdown. Vedere https://api.slack.com/reference/surfaces/formatting nella documentazione dell'interfaccia API Slack.
Se si intende indirizzare la propria abilità a più canali con diverse funzionalità di formattazione e sintassi, è possibile utilizzare il markup HTML di base nei messaggi. In tal caso, il markup verrà convertito automaticamente nel formato di markdown di Slack quando il messaggio viene trasmesso al canale. Ciò è particolarmente utile se si mirano le proprie competenze ad altri canali oltre a Slack. Vedere Formattazione di testo ricco nei canali.
Vincoli messaggio
I canali Slack in Digital Assistant hanno i seguenti vincoli di messaggio:
- Messaggi di testo
- Lunghezza massima del messaggio di testo: 3000 caratteri. Se la lunghezza supera 3000, il testo viene suddiviso su più messaggi.
- Lunghezza massima dell'etichetta dell'azione di testo: 30 caratteri
- Tipi di azioni di testo consentiti: Postback, URL
- Schede orizzontali
- Supportato?: No. Il layout della scheda viene convertito in verticale.
- Schede verticali
- Lunghezza massima del titolo: 3000 caratteri
- Lunghezza massima della descrizione: 3000 caratteri
- Lunghezza massima dell'etichetta di azione della scheda: 30 caratteri
- Numero massimo di carte: 100
- Tipi di azioni della carta consentiti: Postback, URL
- Tipi di azioni elenco carte consentite: Postback, URL
- Messaggi allegato
- Supportato?: Sì
- Tipi di azioni consentite: Postback, URL
- Pulsanti di azione
- Lunghezza massima dell'etichetta di azione globale: 30 caratteri
- Tipi di azioni globali consentiti: Postback, URL
Estensioni canale Slack
Per i canali Slack, è possibile estendere la funzionalità dei componenti Common Response con funzionalità specifiche di Slack.
Per accedere alle estensioni, utilizzare l'elemento channelCustomProperties
nei metadati del componente Risposta comune e impostare le proprietà appropriate. Il codice ha il formato seguente:
...
channelCustomProperties:
- channel: "slack"
properties:
PROPERTY_NAME: "PROPERTY_VALUE"
...
Di seguito sono riportate le proprietà personalizzate disponibili per i canali Slack.
Nome | Valori ammessi | Si applica a... | descrizione; |
---|---|---|---|
dropDownPlaceholder |
|
Articoli risposta | Utilizzare questa proprietà per specificare il testo segnaposto visualizzato nell'elenco a discesa. |
ephemeral |
|
Articoli risposta | Può essere utilizzato nelle chat di gruppo per visualizzare un messaggio a un solo utente, ad esempio quando l'utente tenta di eseguire l'autenticazione. |
fields |
|
Elementi di risposta di tipo text .
|
I valori di stringa specificati in questa proprietà vengono visualizzati come campi in un layout a due colonne (desktop) o in un layout a colonna singola (mobile). |
renderActionsAsDropDown |
|
Articoli risposta | Per impostazione predefinita (se non si imposta questa proprietà), vengono visualizzate le azioni riportate di seguito.
Se si desidera visualizzare le azioni in un elenco a discesa, indipendentemente dal numero di azioni disponibili, impostare questa proprietà su Se si desidera visualizzare le azioni come pulsanti, indipendentemente dal numero di azioni disponibili, impostare questa procedura su Se si desidera avere un comportamento diverso per diversi tipi di azioni di postback, è possibile utilizzare un oggetto nidificato con valori booleani per ognuno dei seguenti tipi di azioni:
Per eseguire il rendering delle azioni in un menu a discesa, Slack utilizza un menu di selezione con elementi statici. Vedere https://api.slack.com/reference/messaging/block-elements#static-select. |
showDatePicker |
|
Elementi di risposta di tipo text .
|
Impostare su true per visualizzare un selettore data accanto al messaggio di testo.
Nella finestra di dialogo Aggiungi stato è possibile selezionare il modello Selettore data Slack per ottenere il codice di esempio per la visualizzazione condizionale di un selettore data. Vedere anche https://api.slack.com/reference/messaging/block-elements#datepicker. |
showImageInAccessory |
|
Elementi di risposta di tipo cards .
|
Impostare su true per visualizzare l'immagine della scheda a destra come immagine di piccole dimensioni invece di un'immagine centrale più grande.
|
Di seguito è riportato un esempio di utilizzo della proprietà personalizzata renderActionsAsDropDown
.
responseItems:
- type:
"text"
text: "Here is a list of the UI features of the Common Response Component:"
actions:
- ...
channelCustomProperties:
- channel: "slack"
properties:
renderActionsAsDropDown: false
Di seguito è riportato un esempio di utilizzo della proprietà personalizzata renderActionsAsDropDown
con proprietà nidificate per postbackActions
, cardPostbackActions
e globalPostbackActions
.
responseItems:
- type: "text"
text: "Here is a list of the UI features of the Common Response Component:"
actions:
- ...
channelCustomProperties:
- channel: "slack"
properties:
renderActionsAsDropDown:
postbackActions: false
cardPostbackActions: true
globalPostbackActions: true
Per informazioni più generali su channelCustomProperties
, vedere Estensioni specifiche del canale.
Modali Slack
È possibile creare un pulsante per richiamare un modale Slack in un componente Risposta comune. A tale scopo, impostare la proprietà dell'azione del pulsante su system.openModal
e includere una variabile denominata system.dialogPayload
di tipo map
. I metadati dell'azione devono avere un aspetto simile a questo snippet:
actions:
- label: "Open Dialog"
type: "postback"
payload:
action: "system.openModal"
variables:
system.dialogPayload: ${dialogPayload}
L'espressione Freemarker che fa riferimento alla variabile
system.dialogPayload
non termina con .value
. Questo perché la variabile contiene un oggetto JSON e le espressioni Freemarker devono sempre restituire una stringa. L'uso dell'espressione ${dialogPayload.value}
genererebbe un errore. La conversione da oggetto a stringa JSON viene eseguita quando si omette .value
.
Il valore di system.dialogPayload
viene in genere impostato in un componente personalizzato, ma può anche essere definito in linea o utilizzando un componente Imposta variabile.
Se si imposta la variabile
system.dialogPayload
in un componente personalizzato, non è necessario codificare i valori dell'entità come opzioni. È invece possibile iterare tutti i valori di entità di un elemento specifico e creare dinamicamente un tipo di elemento di selezione con un array di opzioni per i valori consentiti.
Quando l'utente sottomette l'input nella finestra di dialogo Slack, il componente Risposta comune imposta la transizione system.dialogSubmitted
per passare a uno stato che elabora i valori sottomessi. I valori sottomessi vengono memorizzati in variabili con lo stesso nome.
Spetta all'utente determinare come elaborare i valori dei campi sottomessi. Il componente Risposta comune NON esegue alcun aggiornamento automatico dei valori di entità. Memorizza solo i valori nelle variabili. In genere questi valori vengono elaborati in un componente personalizzato, in modo da poter eseguire convalide aggiuntive, se necessario. Nel suo modulo più semplice, è possibile memorizzare i valori dei campi sottomessi in una variabile stringa e quindi utilizzare il componente Entità corrispondenza per aggiornare i valori delle entità.
Suggerimento
Nell'editor del flusso della finestra di dialogo (sia in modalità Visual che in modalità YAML), è disponibile un modello Slack Block Kit che contiene un esempio di metadati fortemente nidificato tipico dell'output del kit builder. Se hai bisogno di metadati complessi per un tale stato e vuoi renderlo più facile da leggere, puoi utilizzare variabili di mappa a livello di flusso, incollare interi oggetti JSON generati dal generatore di kit come valori predefiniti e incorporare le variabili nei metadati.Per la documentazione completa sui tipi di elemento supportati nel payload della finestra di dialogo Slack, vedere https://api.slack.com/reference/block-kit/block-elements. La struttura specificata nel payload della finestra di dialogo deve essere identica alla struttura descritta nella documentazione di Slack.
La finestra di dialogo Slack supporta anche l'invio di un array di errori come risposta quando il modale viene sottomesso. Tuttavia, questa funzionalità non è attualmente supportata nei componenti Common Response. È invece necessario gestire la convalida personalizzata e il feedback degli utenti associati agli errori di convalida in un componente personalizzato.
Finestra di dialogo Slack
Slack consiglia ora di utilizzare i modali Slack anziché le finestre di dialogo Slack. Vedere Modali Slack per informazioni dettagliate sull'integrazione dei modali Slack nel flusso della finestra di dialogo e https://api.slack.com/block-kit/dialogs-to-modals per informazioni sulla conversione delle finestre di dialogo in modali.
È possibile creare un pulsante per richiamare una finestra di dialogo Slack in un componente Risposta comune. A tale scopo, impostare la proprietà dell'azione del pulsante su system.openDialog
e includere una variabile denominata system.dialogPayload
. I metadati dell'azione devono avere un aspetto simile a questo snippet:
actions:
- label: "Edit"
type: "postback"
payload:
action: "system.openDialog"
variables:
system.dialogPayload: ${dialogPayload}
L'espressione Freemarker che fa riferimento alla variabile
system.dialogPayload
non termina con .value
. Questo perché la variabile contiene un oggetto JSON e le espressioni Freemarker devono sempre restituire una stringa. L'uso dell'espressione ${dialogPayload.value}
genererebbe un errore. La conversione da oggetto a stringa JSON viene eseguita quando si omette .value
.
Il valore di system.dialogPayload
viene in genere impostato in un componente personalizzato, ma può anche essere definito in linea o utilizzando un componente Imposta variabile.
Se si imposta la variabile
system.dialogPayload
in un componente personalizzato, non è necessario codificare i valori dell'entità come opzioni. È invece possibile iterare tutti i valori di entità di un elemento specifico e creare dinamicamente un tipo di elemento di selezione con un array di opzioni per i valori consentiti.
Quando l'utente sottomette l'input nella finestra di dialogo Slack, il componente Risposta comune imposta la transizione system.dialogSubmitted
per passare a uno stato che elabora i valori sottomessi. I valori sottomessi vengono memorizzati nelle variabili di flusso della finestra di dialogo con lo stesso nome.
Spetta all'utente determinare come elaborare i valori dei campi sottomessi. Il componente Risposta comune NON esegue alcun aggiornamento automatico dei valori di entità. Memorizza solo i valori nelle variabili di flusso della finestra di dialogo. In genere questi valori vengono elaborati in un componente personalizzato, in modo da poter eseguire convalide aggiuntive, se necessario. Nel suo modulo più semplice, è possibile memorizzare i valori dei campi sottomessi in una variabile stringa e quindi utilizzare il componente Entità corrispondenza per aggiornare i valori delle entità.
Per la documentazione relativa ad altre proprietà e tipi di elemento supportati nel payload della finestra di dialogo Slack, vedere https://api.slack.com/dialogs#top-level_dialog_attributes. La struttura del payload della finestra di dialogo deve essere identica alla struttura descritta nella documentazione di Slack.
La finestra di dialogo Slack supporta anche l'invio di un array di errori come risposta quando viene sottomessa la finestra di dialogo. Tuttavia, questa funzionalità non è attualmente supportata nei componenti Common Response. È invece necessario gestire la convalida personalizzata e il feedback degli utenti associati agli errori di convalida in un componente personalizzato.