Panoramica
La tua app può iniziare e continuare le conversazioni nella casella di posta dei membri del workspace, dove parlano anche con l’assistente di Twenty. Un messaggio può terminare su una domanda, un modulo o una modifica da approvare, che il membro risponde dalla chat prima della conversazione continua con l’assistente. Gli helper della posta in arrivo vengono esportati sia datwenty-sdk/logic-function che da twenty-sdk/front-component, quindi una esecuzione pianificata e un pulsante nella tua app postare allo stesso modo.
Invio di un messaggio
sendInboxMessage() pubblica un messaggio dalla tua app nelle chat di uno o più membri del workspace e restituisce il threadId della conversazione.
src/logic-functions/notify-first-recording.ts
workspaceMemberIdselenca i membri che ricevono la conversazione, almeno uno. Il primo membro di una nuova conversazione la possiede, e gli altri lo seguono come partecipanti. Un invio successivo sotto la stessa chiave che elenca i nuovi membri li aggiunge; membri che lascia fuori mantenere la conversazione.threadKeysceglie la conversazione per questa app, condivisa da ogni membro a cui viene inviata. Una nuova chiave avvia una conversazione intitolatatitolo; una chiave usata prima di aggiungere il messaggio a quella conversazione.idempotencyKeyidentifica il messaggio all’interno della conversazione. Invio di nuovo con le stesse chiavi non scrive nulla di nuovo, quindi riprova e simultaneo non duplica mai un messaggio.textè markdown, e può portare menzioni e riferimenti di record.toolCall(opzionale) termina il messaggio su uno di:- a call the member answers, which pauses the conversation:
ask_question(one multiple choice question),request_form(fields to fill in) orpropose_tool_call(call to approve). Il suoinputprende iltoolName, gliargumentscon cui chiameresti lo strumento e unsummarydi una frase. Lo strumento deve essere un ruolo predefinito della tua app potrebbe essere eseguito da solo, comecreate_one_personoupdate_one_opportunity(con il recordid); un’email (send_emailodraft_email, conrecipients,subjecte unbodyin HTML) non ha bisogno del permesso della tua app. Il membro esamina la chiamata nella stessa carta di una chiamata che l’assistente propone, lo modifica se lo desiderano, e la chiamata approvata viene eseguita con il proprio accesso; - uno degli strumenti della tua app, da
logicFunctionUniversalIdentifier, renderizzato dal suo componente frontale coninputeoutputche passi. Non interrompe la conversazione.
- a call the member answers, which pauses the conversation:
- Solo una chiamata le risposte del membro possono aspettare in una conversazione alla volta: inviarne un’altra prima che la risposta fallisca con
THREAD_AWAITING_ANSWER. I messaggi semplici e le chiamate degli strumenti dell’app sono ancora accettati. - Solo il membro che possiede una conversazione può eliminarla, e una conversazione cancellata è andata per ogni membro: non è ricreato, e nulla è aggiunto ad esso. Gli altri membri possono annullare l’iscrizione per toglierla dalla propria casella di posta.
- Ogni membro deve avere il permesso
AIe la chiamata fallisce senza scrivere il messaggio quando uno di loro non può avere la conversazione. Il ruolo predefinito della tua app deve concedereSystemPermissionFlag.AI.
Chi invia il messaggio
Un messaggio è sempre scritto dalla tua app, qualunque cosa abbia innescato la chiamata. La chiamata stessa viene eseguita come API clients:- In una funzione logica, agisce come la persona che ha innescato la corsa, o come la vostra applicazione quando nessuno ha fatto, ad esempio su un programma cron.
- In un componente anteriore, agisce come il membro che guarda la pagina. Quando il token è scaduto, la chiamata lo aggiorna una volta attraverso venti e riprova.
AI pure, come ogni destinatario.
Per inviare da un componente anteriore, importare gli stessi helper da twenty-sdk/front-component. Pubblicazione nella posta in arrivo mostra come aprire la conversazione in seguito.
Menzioni e riferimenti a record
La casella di posta visualizza i token di riferimento intext come chip. Scriveteli con questi aiutanti piuttosto che a mano:
src/logic-functions/flag-idle-deal.ts
inboxMention({ workspaceMemberId })scrive una menzione di un membro del workspace einboxReferenceRecord({ objectNameSingular, recordId })un chip che collega a qualsiasi record.- Entrambi leggono l’etichetta che mostra il chip, come fa il compositore: il nome completo del membro, o la loro e-mail quando il nome è vuoto, e l’identificativo dell’etichetta del record, come il nome dell’azienda. Le parentesi diventano parentesi e le interruzioni di linea diventano spazi, in modo che il chip si renda sempre.
- Hanno letto con lo stesso accesso del resto della chiamata, in modo che l’accesso deve raggiungere il membro o registrare. Un riferimento record fa due richieste, una per il campo dell’etichetta dell’oggetto e una per il record.
- Una menzione solo render. Non aggiunge il membro alla conversazione né li notifica, quindi elenca tutti coloro che dovrebbero ricevere il messaggio in
workspaceMemberIds. INBOX_ASSISTANT_MENTIONè il testo che il compositore scrive quando un membro menziona l’assistente (@Ada), quindi i tuoi messaggi lo chiamano allo stesso modo.