Smarter Chatbots with Node-RED and Watson AI

Brought by: edX

Overview

In this course, you'll learn how to use Node-RED to augment the capabilities of your Watson Assistant chatbots by integrating them with services such as Watson Translate and Text to Speech. You'll also practice deployment of chatbots to Facebook Messenger.

Node-RED, which is built on Node.js, is a browser-based flow editor that makes it easy to wire together devices, APIs, and online services by simply dragging and dropping nodes on a palette. You then connect, or wire, the nodes to create flows that can be then deployed to the lightweight Node.js runtime with a single click.

Get hands-on experience in this course as you learn how to use Node-RED to augment the capabilities of your Watson Assistant chatbots. You will learn how to:
  • Convert speech to text
  • Analyze tone
  • Translate text into different languages
  • Send tweets through Twitter
  • Add audio and video capabilities
  • Set up a chatbot using the IBM Watson Assistant service and Facebook Messenger.
This course requires no programming experience!

Syllabus

Get started

  • Learning objectives
  • Prerequisites
  • Grading scheme
A business opportunity

  • Make money with chatbots
Lab 1: Create your first Node-RED flow

  • Lab 1 overview
  • 1. Create a Node-RED instance
  • 2. Connect Watson services
  • 3. Create your first flows
  • Lab 1 solution
  • Review questions

Lab 2: Build a web page and create a REST API in Node-RED

  • Lab 2 introduction
  • 1. Create a simple web page
  • 2. Add JavaScript to your web application
  • 3. Create a REST API
  • 4. Consume the Watson Translator service
  • Lab 2 solution
  • Review questions

Lab 3: Translate text, analyze tone, add audio, and send tweets from your Node-RED application

  • Lab 3 introduction
  • 1. Find community nodes
  • 2. Add the community nodes to the Node-RED palette
  • 3. Add the Speech to Text, Tone Analyzer, and Text to Speech services
  • 4. Re-create the Interpreter application
  • 5. Prepare for the OK Watson application
  • 6. Add link nodes to more easily view the logic of the application flow
  • 7. Import the OK Watson flow
  • 8. Connect to your Twitter account
  • 9. Add the community nodes to the package.json file (alternative method)
  • Lab 3 summary
  • Lab 3 solution
  • Review question

Lab 4: Create cognitive web pages and a Messenger bot

  • Lab 4 overview
  • 1. Obtain Facebook Messenger credentials
  • 2. Create Node-RED webhooks
  • 3. Create the Node-RED Messenger listener
  • 4. Create a Node-RED Messenger writer
  • 5. Build a video captioning application
  • Lab 4 solution
  • Review question

Lab 5: Build HTML web pages that use Git repositories that can reuse browser-side JavaScript

  • Lab 5 introduction
  • 1. Connect the Watson Conversation service to the Messenger bot
  • 2. Build a Node-RED application that can reuse CSS and browser-side JavaScript
  • Lab 5 Solution
  • Review question

Final Exam

Summary

Taught by

Antonio Cangiano, Soheel Chughtai and Emma Dawson

Smarter Chatbots with Node-RED and Watson AI
Go to course

Smarter Chatbots with Node-RED and Watson AI

Brought by: edX

  • edX
  • Free
  • English
  • Certificate Not Available
  • Certain days
  • intermediate
  • English
8.1.2PHP Version227msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (147ms)
    • Application (79.06ms)
    • 1 x Booting (64.92%)
      147.24ms
      1 x Application (34.86%)
      79.06ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed4.57ms
      • select * from `courses` where `slug_en` = 'smarter-chatbots-with-node-red-and-watson-ai' limit 1
        3.04ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. smarter-chatbots-with-node-red-and-watson-ai
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-04-08 23:06:41' where `id` = 862
        440μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-08 23:06:41
        • 1. 862
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (95)
        260μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        180μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (46) and `institutions`.`deleted_at` is null
        200μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (1) and `providers`.`deleted_at` is null
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 856 limit 1
        240μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 856
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        07JKk2rn6yvYsvY0eQkaqdj5tnJ8HfhG5ZeGiDFF
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/smarter-chatbots-with-node-red-and-watson...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/smarter-chatbots-with-node-red-and-watson-ai
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "3.131.142.67" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "92d56aa56c736af6-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "x-forwarded-for" => array:1 [ 0 => "3.131.142.67" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "3.131.142.67" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "92d56aa56c736af6-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_X_FORWARDED_FOR" => "3.131.142.67" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "61250" "REMOTE_ADDR" => "172.69.17.23" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/smarter-chatbots-with-node-red-and-watson-ai" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1744153601.1101 "REQUEST_TIME" => 1744153601 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Tue, 08 Apr 2025 23:06:41 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImZLaDE2dThCeDBSblNNNjlrSWl3eXc9PSIsInZhbHVlIjoiUFJNVS9ZZzY1My9MT0tNREcxbHZNQUcvcHpyc053L0FGN2pOVmF6VStvL3pUeWFJTCtYNTJ0VFB2aDlObzNReVBJeGtUSStGZUhaMnU0NFU0S2g2c1VKdTdDb2FLK3ppbnVTVDZrME9ERko1Rndnek44K21OL3lVUEY3Vk10WEUiLCJtYWMiOiI0ZDc1Mzk3YTg1MDIzZTMzNTI3NzVhNDQwMGFlNGU4MTJlNmRhNGE1ODhlZDM3MzhmNTFkYzQ0OWFkNDkxYmI4IiwidGFnIjoiIn0%3D; expires=Wed, 09 Apr 2025 01:06:41 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6ImZLaDE2dThCeDBSblNNNjlrSWl3eXc9PSIsInZhbHVlIjoiUFJNVS9ZZzY1My9MT0tNREcxbHZNQUcvcHpyc053L0FGN2pOVmF6VStvL3pUeWFJTCtYNTJ0VFB2aDlObzNReVBJeGtUS" 1 => "laravel_session=eyJpdiI6IjN6VEd1S1AzT1h3eEdOamhaY3FaSFE9PSIsInZhbHVlIjoibmRkcEVUeXpzQWlmK2VKZVdEbzhzWmhjdVJKc2RyR0MxZmV1WHZzVGpSNnJISUQ0Q0ZqV2FFMjAxZ3UzYlVXQTJGL2tGaGF1enhLYzRISms2VWVNWTVSVm5yNzQ0N0cyb3hpS2JyZEIwUkpGQkdFeitBNmdFdENXbGluTU9Jd3YiLCJtYWMiOiI4NzA3ZWUyMTNhNmRhODhlYjg1MGI4MGM2YzYyNjEwMDMwY2M0YjhlZTgzZWU4Y2UwMzM5ZTAyNGM4MjcwM2QzIiwidGFnIjoiIn0%3D; expires=Wed, 09 Apr 2025 01:06:41 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IjN6VEd1S1AzT1h3eEdOamhaY3FaSFE9PSIsInZhbHVlIjoibmRkcEVUeXpzQWlmK2VKZVdEbzhzWmhjdVJKc2RyR0MxZmV1WHZzVGpSNnJISUQ0Q0ZqV2FFMjAxZ3UzYlVXQTJG" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImZLaDE2dThCeDBSblNNNjlrSWl3eXc9PSIsInZhbHVlIjoiUFJNVS9ZZzY1My9MT0tNREcxbHZNQUcvcHpyc053L0FGN2pOVmF6VStvL3pUeWFJTCtYNTJ0VFB2aDlObzNReVBJeGtUSStGZUhaMnU0NFU0S2g2c1VKdTdDb2FLK3ppbnVTVDZrME9ERko1Rndnek44K21OL3lVUEY3Vk10WEUiLCJtYWMiOiI0ZDc1Mzk3YTg1MDIzZTMzNTI3NzVhNDQwMGFlNGU4MTJlNmRhNGE1ODhlZDM3MzhmNTFkYzQ0OWFkNDkxYmI4IiwidGFnIjoiIn0%3D; expires=Wed, 09-Apr-2025 01:06:41 GMT; path=/XSRF-TOKEN=eyJpdiI6ImZLaDE2dThCeDBSblNNNjlrSWl3eXc9PSIsInZhbHVlIjoiUFJNVS9ZZzY1My9MT0tNREcxbHZNQUcvcHpyc053L0FGN2pOVmF6VStvL3pUeWFJTCtYNTJ0VFB2aDlObzNReVBJeGtUS" 1 => "laravel_session=eyJpdiI6IjN6VEd1S1AzT1h3eEdOamhaY3FaSFE9PSIsInZhbHVlIjoibmRkcEVUeXpzQWlmK2VKZVdEbzhzWmhjdVJKc2RyR0MxZmV1WHZzVGpSNnJISUQ0Q0ZqV2FFMjAxZ3UzYlVXQTJGL2tGaGF1enhLYzRISms2VWVNWTVSVm5yNzQ0N0cyb3hpS2JyZEIwUkpGQkdFeitBNmdFdENXbGluTU9Jd3YiLCJtYWMiOiI4NzA3ZWUyMTNhNmRhODhlYjg1MGI4MGM2YzYyNjEwMDMwY2M0YjhlZTgzZWU4Y2UwMzM5ZTAyNGM4MjcwM2QzIiwidGFnIjoiIn0%3D; expires=Wed, 09-Apr-2025 01:06:41 GMT; path=/; httponlylaravel_session=eyJpdiI6IjN6VEd1S1AzT1h3eEdOamhaY3FaSFE9PSIsInZhbHVlIjoibmRkcEVUeXpzQWlmK2VKZVdEbzhzWmhjdVJKc2RyR0MxZmV1WHZzVGpSNnJISUQ0Q0ZqV2FFMjAxZ3UzYlVXQTJG" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "07JKk2rn6yvYsvY0eQkaqdj5tnJ8HfhG5ZeGiDFF" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/smarter-chatbots-with-node-red-and-watson-ai" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]