{"id":3268,"date":"2021-04-26T10:30:00","date_gmt":"2021-04-26T08:30:00","guid":{"rendered":"https:\/\/ellycode.com\/?p=3268"},"modified":"2021-04-26T10:52:37","modified_gmt":"2021-04-26T08:52:37","slug":"intelligenza-artificiale-per-tutti-bot-framework-composer","status":"publish","type":"post","link":"https:\/\/ellycode.com\/it\/blog\/intelligenza-artificiale-per-tutti-bot-framework-composer\/","title":{"rendered":"Intelligenza Artificiale per tutti: Bot Framework Composer"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Nella creazione di un&#8217;applicazione che coinvolge l\u2019intelligenza artificiale, l\u2019interazione tra diversi reparti \u00e8 l\u2019arma vincente. Questo vale specialmente per le applicazioni conversazionali, dove il contributo di figure diverse pu\u00f2 concentrarsi in ambiti specifici: gli esperti di dominio ad esempio possono contribuire alla realizzazione di funzionalit\u00e0 utili nel proprio ambito, i traduttori possono tradurre i dialoghi in una lingua diversa, e cos\u00ec via.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Non tutti, per\u00f2, hanno anche le conoscenze tecniche per creare un\u2019applicazione partendo dal codice. In questi casi possiamo utilizzare gli strumenti che ci consentono di creare un\u2019applicazione con poco codice, detti <strong>tool low-code<\/strong>, o addirittura senza codice, chiamati <strong>tool no-code<\/strong>. Queste soluzioni danno la possibilit\u00e0 di inserire nel processo di sviluppo anche chi non ha conoscenze di programmazione o intelligenza artificiale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sono molte le piattaforme, in Cloud e non, che offrono strumenti del genere. Oggi ci soffermeremo sull\u2019offerta Microsoft, che include diverse soluzioni per la creazione di Bot che si adattano ad esigenze diverse: in questo articolo vedremo insieme il Bot Framework Composer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-di-cosa-si-tratta\">Di cosa si tratta<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Come si pu\u00f2 gi\u00e0 intuire dal nome, il Composer \u00e8 basato su <a href=\"https:\/\/dev.botframework.com\" target=\"_blank\" rel=\"noreferrer noopener\">Bot Framework<\/a>, una serie di librerie e strumenti open source per lo sviluppo di Bot. Scrivere codice non \u00e8 pi\u00f9 strettamente necessario, in quanto Composer segue un approccio grafico basato sulla costruzione di diagrammi di flusso e template testuali che andranno a costituire la logica del Bot, lasciando comunque la possibilit\u00e0 di personalizzare alcuni aspetti tecnici. Per poter sfruttare appieno le funzionalit\u00e0 del framework, pu\u00f2 essere utile quindi conoscere le sue convenzioni e quali sono le integrazioni che mette a disposizione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un esempio \u00e8 l\u2019integrazione con diversi servizi su Cloud Azure, per i quali il tool offre integrazione nativa, come i servizi di NLP LUIS e QnA Maker, che ci aiutano a costruire un&#8217;applicazione ricca ed intelligente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se non conoscete LUIS potete farvi un\u2019idea generale di quali funzionalit\u00e0 offre dando uno sguardo al precedente <a href=\"https:\/\/ellycode.com\/it\/blog\/automatizzare-linterazione-con-lintelligenza-artificiale\/\" target=\"_blank\" rel=\"noreferrer noopener\">articolo<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una volta <a href=\"https:\/\/docs.microsoft.com\/it-IT\/composer\/install-composer\" target=\"_blank\" rel=\"noreferrer noopener\">installato<\/a> ed aperto, fin da subito Composer ci presenta molti esempi da cui partire o anche trarre semplicemente spunto. Tra questi daremo uno sguardo a \u201c<em>Todo with LUIS<\/em>\u201d, un Bot per gestire delle liste che utilizza LUIS per capire le richieste dell\u2019 utente.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"760\" data-attachment-id=\"3274\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/intelligenza-artificiale-per-tutti-bot-framework-composer\/attachment\/main_screen_numbers\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/main_screen_numbers.png?fit=1296%2C962&amp;ssl=1\" data-orig-size=\"1296,962\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"main_screen_numbers\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/main_screen_numbers.png?fit=1024%2C760&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/main_screen_numbers.png?resize=1024%2C760&#038;ssl=1\" alt=\"\" class=\"wp-image-3274\" srcset=\"https:\/\/ellycode.com\/wp-content\/uploads\/2021\/04\/main_screen_numbers-980x727.png 980w, https:\/\/ellycode.com\/wp-content\/uploads\/2021\/04\/main_screen_numbers-480x356.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Aperto il nuovo progetto, la schermata principale si presenta cos\u00ec:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Un menu laterale con cui potersi spostare tra le diverse sezioni del composer.<\/li><li>La lista dei <em>dialog<\/em> gestiti dal bot.<\/li><li>Il flusso del <em>dialog<\/em> selezionato.<\/li><li>Le propriet\u00e0 di un singolo blocco all\u2019interno del flusso.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Ma cosa sono questi <em>dialog<\/em>?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-gestione-dei-dialoghi\">Gestione dei dialoghi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La conversazione con un utente viene gestita in quello che viene chiamato <em>dialog<\/em>, che rappresenta una specifica sequenza di interazioni con l\u2019utente. All\u2019interno di un dialog si possono richiedere informazioni all\u2019utente, inviargli dei messaggi, valutare i dati a disposizione ed eseguire azioni. Vediamolo in pratica selezionando il dialog <em>WelcomeUser <\/em>dalla lista.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questo dialog invia un messaggio di benvenuto agli utenti che aprono una conversazione con il Bot. Il messaggio viene inviato dal blocco <em>Send a Response<\/em>.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"470\" height=\"407\" data-attachment-id=\"3279\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/intelligenza-artificiale-per-tutti-bot-framework-composer\/attachment\/send_response\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/send_response.png?fit=470%2C407&amp;ssl=1\" data-orig-size=\"470,407\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"send_response\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/send_response.png?fit=470%2C407&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/send_response.png?resize=470%2C407&#038;ssl=1\" alt=\"\" class=\"wp-image-3279\" srcset=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/send_response.png?w=470&amp;ssl=1 470w, https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/send_response.png?resize=300%2C260&amp;ssl=1 300w\" sizes=\"auto, (max-width: 470px) 100vw, 470px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Da qui \u00e8 possibile arricchire la risposta. Si possono aggiungere delle variazioni alle frasi, cos\u00ec da rendere la conversazione pi\u00f9 dinamica, oppure aggiungere una risposta vocale sintetizzando il testo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E\u2019 possibile utilizzare l\u2019approccio grafico, o accedere direttamente al template testuale che utilizza la sintassi <a href=\"https:\/\/docs.microsoft.com\/en-us\/composer\/how-to-send-messages\" target=\"_blank\" rel=\"noreferrer noopener\">LanguageGenerator<\/a>. Questa sintassi ci consente di non fermarci al semplice testo, ma rispondere con card ricche ed interattive, ad esempio includendo audio o video, o utilizzando le <a href=\"https:\/\/adaptivecards.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Adaptive Cards<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tramite Adaptive Cards, \u00e8 possibile creare delle card interattive per presentare le informazioni in maniera grafica ed interattiva, come questa card per le informazioni su un volo, che \u00e8 solo uno dei tanti esempi messi a disposizione sul portale di Adaptive Cards.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"398\" height=\"307\" data-attachment-id=\"3281\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/intelligenza-artificiale-per-tutti-bot-framework-composer\/attachment\/flight_card\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/flight_card.png?fit=398%2C307&amp;ssl=1\" data-orig-size=\"398,307\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"flight_card\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/flight_card.png?fit=398%2C307&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/flight_card.png?resize=398%2C307&#038;ssl=1\" alt=\"\" class=\"wp-image-3281\" srcset=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/flight_card.png?w=398&amp;ssl=1 398w, https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/flight_card.png?resize=300%2C231&amp;ssl=1 300w\" sizes=\"auto, (max-width: 398px) 100vw, 398px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-riconoscimento-degli-intent\">Riconoscimento degli intent<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il riconoscimento delle intenzioni dell\u2019utente pu\u00f2 avvenire tramite la definizioni di regole fisse, oppure affidandosi a LUIS. Da Composer si possono definire le frasi di esempio e anche le entit\u00e0 contenute all\u2019interno di esse.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"734\" data-attachment-id=\"3283\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/intelligenza-artificiale-per-tutti-bot-framework-composer\/attachment\/intent_recog\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/intent_recog.png?fit=1105%2C792&amp;ssl=1\" data-orig-size=\"1105,792\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"intent_recog\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/intent_recog.png?fit=1024%2C734&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/intent_recog.png?resize=1024%2C734&#038;ssl=1\" alt=\"\" class=\"wp-image-3283\" srcset=\"https:\/\/ellycode.com\/wp-content\/uploads\/2021\/04\/intent_recog-1024x734.png 1024w, https:\/\/ellycode.com\/wp-content\/uploads\/2021\/04\/intent_recog-980x702.png 980w, https:\/\/ellycode.com\/wp-content\/uploads\/2021\/04\/intent_recog-480x344.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Nel caso in cui non ci si volesse affidare a LUIS, \u00e8 possibile definire una lista di espressioni regolari all\u2019interno del campo <em>trigger phrases<\/em>. Con questo metodo \u00e8 possibile riconoscere frasi semplici e va bene quando ci si aspetta delle frasi che non varieranno molto, oppure con codici e sigle personalizzati.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mediante espressioni regolari \u00e8 possibile non solo riconoscere l\u2019intento dell\u2019utente, ma anche di estrapolare parti della frase come variabili da utilizzare nei nostri dialog.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"465\" height=\"186\" data-attachment-id=\"3286\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/intelligenza-artificiale-per-tutti-bot-framework-composer\/attachment\/regexp_intent-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/regexp_intent-1.png?fit=465%2C186&amp;ssl=1\" data-orig-size=\"465,186\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"regexp_intent-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/regexp_intent-1.png?fit=465%2C186&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/regexp_intent-1.png?resize=465%2C186&#038;ssl=1\" alt=\"\" class=\"wp-image-3286\" srcset=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/regexp_intent-1.png?w=465&amp;ssl=1 465w, https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/regexp_intent-1.png?resize=300%2C120&amp;ssl=1 300w\" sizes=\"auto, (max-width: 465px) 100vw, 465px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ulteriori-funzionalit\">Ulteriori funzionalit\u00e0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Spesso non si pu\u00f2 fare a meno di accedere a servizi esterni per eseguire le operazioni richieste o recuperare delle informazioni da restituire all\u2019utente. Composer ci mette a disposizione diversi strumenti per accedere a risorse esterne. E\u2019 possibile invocare ad esempio una API REST. Il risultato dell\u2019invocazione pu\u00f2 essere poi manipolato all\u2019interno del flusso del dialog e restituito all\u2019utente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bot Framework Composer inoltre permette di gestire i dialoghi in pi\u00f9 lingue, cos\u00ec da rendere semplice tradurre l\u2019app nelle lingue dei propri utenti.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Come gi\u00e0 detto, Bot Framework Composer fa parte di un framework pi\u00f9 ampio chiamato <a href=\"https:\/\/dev.botframework.com\">Bot Framework<\/a>: un sistema flessibile, a cui si possono applicare diverse personalizzazioni adatte ad ogni caso d\u2019uso. In <a href=\"https:\/\/microsoft.github.io\/botframework-solutions\/\">Bot Framework Solutions<\/a>, ad esempio, trovate l\u2019implementazione di un meccanismo di feedback con cui chiedere il parere dell\u2019utente sul Bot, cos\u00ec da poterlo migliorare sulla base dell\u2019esperienza degli utenti.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-testare-l-applicazione\">Testare l\u2019applicazione<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per testare l\u2019applicazione, \u00e8 possibile avviare il Bot ed aprire una conversazione. Il Composer avvia il Bot e crea anche le risorse necessarie al test dell\u2019applicazione, in questo caso, ad esempio, crea le app LUIS in maniera automatica.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"394\" height=\"592\" data-attachment-id=\"3288\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/intelligenza-artificiale-per-tutti-bot-framework-composer\/attachment\/test_webchat\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/test_webchat.png?fit=394%2C592&amp;ssl=1\" data-orig-size=\"394,592\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"test_webchat\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/test_webchat.png?fit=394%2C592&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/test_webchat.png?resize=394%2C592&#038;ssl=1\" alt=\"\" class=\"wp-image-3288\" srcset=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/test_webchat.png?w=394&amp;ssl=1 394w, https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/test_webchat.png?resize=200%2C300&amp;ssl=1 200w\" sizes=\"auto, (max-width: 394px) 100vw, 394px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-in-produzione\">In produzione!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ci sono diversi modi di fare il deploy dell\u2019applicazione, una completamente automatica ed una manuale. Nel caso della prima, il tool si occuper\u00e0 di creare e gestire tutte le risorse necessarie a far girare il nostro bot su Azure, come ad esempio le app LUIS e QnA maker.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dalle impostazioni di progetto, si crea un profilo di pubblicazione. Il wizard chieder\u00e0 di autenticarsi con il proprio account Azure, di cui \u00e8 necessario avere una sottoscrizione valida, e far\u00e0 il resto.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" data-attachment-id=\"3290\" data-permalink=\"https:\/\/ellycode.com\/it\/blog\/intelligenza-artificiale-per-tutti-bot-framework-composer\/attachment\/app_publish\/\" data-orig-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/app_publish.png?fit=1096%2C785&amp;ssl=1\" data-orig-size=\"1096,785\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"app_publish\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/app_publish.png?fit=1024%2C733&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/app_publish.png?resize=1024%2C733&#038;ssl=1\" alt=\"\" class=\"wp-image-3290\" srcset=\"https:\/\/ellycode.com\/wp-content\/uploads\/2021\/04\/app_publish-1024x733.png 1024w, https:\/\/ellycode.com\/wp-content\/uploads\/2021\/04\/app_publish-980x702.png 980w, https:\/\/ellycode.com\/wp-content\/uploads\/2021\/04\/app_publish-480x344.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Il secondo metodo, \u00e8 quello di esportare il codice dell\u2019applicazione e di farne il deploy manualmente nell\u2019ambiente che si preferisce. La procedura \u00e8 per utenti esperti, e consente di personalizzare gli aspetti di natura pi\u00f9 tecnica dell\u2019applicazione. Potete trovare maggiori informazioni nella <a href=\"https:\/\/docs.microsoft.com\/en-us\/composer\/how-to-add-custom-action?tabs=csharp#export-the-bot-runtime\" target=\"_blank\" rel=\"noreferrer noopener\">guida ufficiale<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In ogni caso, una volta esportato il Bot pu\u00f2 essere pubblicato sui canali disponibili come Teams, Skype, Facebook e <a href=\"https:\/\/docs.microsoft.com\/it-it\/azure\/bot-service\/bot-service-manage-channels?view=azure-bot-service-4.0\" target=\"_blank\" rel=\"noreferrer noopener\">tanti altri<\/a>. In alternativa, \u00e8 possibile utilizzare il progetto Web Chat per integrare all\u2019interno di un sito gi\u00e0 esistente una chat.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-per-finire\">Per finire<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il Bot Framework Composer con il suo approccio low-code consente di separare quelli che sono i problemi tecnici da quelli del dominio, permettendo alle figure non tecniche di essere incluse nel ciclo di sviluppo del prodotto, pur lasciando la porta aperta alla personalizzazione del Bot, modificando il codice per integrare le funzionalit\u00e0 non previste nativamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E\u2019 fondamentale capire che una tecnologia del genere non pu\u00f2 essere demandata soltanto agli sviluppatori, che poi \u00e8 la ragione principale per cui stiamo realizzando <a href=\"https:\/\/ellycode.com\/it\/blog\/intelligenza-artificiale-e-accesso-ai-dati-sfida-accettata\">Elly<\/a>: creare strumenti che aiutino gli esperti a dare valore ai propri dati!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Continuate a seguirci!<\/p>\n\n\n[et_pb_section global_module=\"1791\"][\/et_pb_section]\n","protected":false},"excerpt":{"rendered":"<p>Nella creazione di un&#8217;applicazione che coinvolge l\u2019intelligenza artificiale, l\u2019interazione tra diversi reparti \u00e8 l\u2019arma vincente. Questo vale specialmente per le applicazioni conversazionali, dove il contributo di figure diverse pu\u00f2 concentrarsi in ambiti specifici: gli esperti di dominio ad esempio possono contribuire alla realizzazione di funzionalit\u00e0 utili nel proprio ambito, i traduttori possono tradurre i dialoghi [&hellip;]<\/p>\n","protected":false},"author":195423238,"featured_media":3295,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_crdt_document":"","inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[688637365],"tags":[],"class_list":["post-3268","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/ellycode.com\/wp-content\/uploads\/2021\/04\/14_1105x656_blog_Composer.png?fit=1105%2C656&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pcuDuD-QI","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/posts\/3268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/users\/195423238"}],"replies":[{"embeddable":true,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/comments?post=3268"}],"version-history":[{"count":14,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/posts\/3268\/revisions"}],"predecessor-version":[{"id":3312,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/posts\/3268\/revisions\/3312"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/media\/3295"}],"wp:attachment":[{"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/media?parent=3268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/categories?post=3268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ellycode.com\/it\/wp-json\/wp\/v2\/tags?post=3268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}