npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

wa-chat-server

v0.15.11

Published

Watson Assistant powered chat server

Downloads

22

Readme

wa-chat-server

Chat server based on the Watson Assistant API.

Configuration

Generally, we need to enter these environment variables to run an assistant:

  • master_id – Master chatbot id.
  • master_apikey – Master chatbot apikey.
  • master_url – Assistant URL.
  • master_timeout_ms – (optional) Timeout period in MS for calling chatbot.

In order to enable saving history of conversation, we have to set

  • history_enabled – Enable history

The behaviour of conversation restart is controlled by

  • soft_restart

On conversation restart the client sends the text input reset. With soft_restart === 'true' Watson is called with options.restart = true and reset is sent as a text input. Otherwise a new Watson session is created (the default option).

For swagger documentation, we have to set. Swagger documentation is located on URL/apidoc

  • apidoc_enabled - Enable documentation

For a multiskill bot, we have to set

  • routing_enabled – Enable routing.

and available child bots credentials

  • childNUMBER_alias – Assistant alias. NUMBER can be actually any string alias, but we recommend to use a chatbot order.
  • childNUMBER_id – Assistant id.

An example of such configuration could be

## Master assistant
master_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
master_apikey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
master_url = https://gateway-fra.watsonplatform.net/assistant/api

# Child1 assistant
child1_alias = 'Child1'
child1_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

# Child2 assistant
child2_alias = 'Child2'
child2_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

# History enabled
history_enabled = true

# Routing enabled
routing_enabled = true

Here are some optional configurations:

  • client_data_max_size_in_bytes - Set this property to a positive value if you would like to map data from the property client of the .../message API to the Watson context (property client). If the configured data size is exceeded then a warning is logged and no client data are mapped to the context.

  • json_raw_body - Set this property to true to enable saving raw request body before parsing it to JSON. Generally used to validate request sender by comparing HMAC signature in adapters. Enabling this option will result in larger request size so consider using this feature only when required. Buffer containing the raw request body will be passed in rawBody attribute of the request.

Alternative authentication configurations:

IBM Cloud Pak For Data (CP4D) - If the Watson Assistant service is provided on-premise instead of IBM Cloud, there is an alternative authorization scheme using different set of credentials. Providing token_service_url will force initialization of CP4D authorization instead of IAM authorization. In this case the value master_apikey is not required.

  • token_service_url - URL for the authorization endpoint that provides tokens. In standard CP4D installation it should be https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize.
  • token_service_username - Username that is used for generating the token.
  • token_service_password - Password that is used for generating the token. Not needed if token_service_apikey is provided.
  • token_service_apikey - Apikey that is used for generating the token. When using apikey instead of password, token_service_username is still required - the apikey is generated for specific user. Not needed if token_service_password is provided.

Adapter Configuration

If there are some wa-chat-server adapters used in the deployment of the bot, the adapter configuration is placed on the same place as the wa-chat-server configuration (e. g. .env). The adapter specific directives are prefixed with adapter__[ADAPTER_NAME]__ (for example adapter__microsoft__appId).

LogDNA Logging

In order to use the LogDNA API for logging we need to set the following environment variables:

  • logdna_key – Ingestion key for LogDNA.
  • logdna_url – URL of the LogDNA API (ingestion endpoint, e. g. https://logs.eu-de.logging.cloud.ibm.com/logs/ingest).
  • logdna_app – Name of the application (optional).
  • logdna_app_hostname – Hostname of the application (optional).
  • logdna_log_level – The log level (error, info, warn and debug). The default value is error.

If we configure LogDNA on local development instance (determined by the presence/absence of the VCAP_APP_PORT env. variable) then logs will be send to LogDNA as well as to the JavaScript console.

Shared Context

Context variables

$shared-PARAM

are shared with the whole router, which can thus affect its behaviour. This method populates the parameters in a non-routing way, i.e. there is no necessity for switching the dialog flow through the various chatbots.

For sharing parameters during routing, see attribute params in Routing from a master chatbot.

Routing

Routing allows us to pass the ongoing conversation from one chatbot to another. These are then distinguish into the master and child chatbots. Master chatbot may generally route to any child chatbot while the child chatbots may route only to the master, where is then decided what to do next.

The routing is determined by a context variable of a specific format, see Routing from a master chatbot and Routing from a child chatbot.

Routing from a master chatbot

The target context variable for routing has to be set to

$route-target = TARGET_CHATBOT_ALIAS

where TARGET_CHATBOT_ALIAS is an alias for the chatbot, defined in the application configuration.

There are some optional attributes that may be added to $route:

Attribute | Description --- | --- $route-intent | A name of a forced intent (always starting with the character #). $route-utterance | A forced utterance whose value is a context variable. If not specified, the assistant sends the user's last utterance. $route-params | An object of extra parameters that will be set using $route-params-PARAM1, $route-params-PARAM2 and temporarily stored for the target chatbot context as $incoming_route-params-PARAM1, $incoming_route-params-PARAM2, etc. For a permanent action, we should use $shared instead, see Shared Context for more details.

In order to determine the caller assistant, the integration provides

$incoming_route-origin

as a context variable for a master chatbot .

Routing from a child chatbot

We don't specify the target as the child chatbot always route to the master. Therefore the context variable is just set to

$route-target = [MASTER]

Similarly, as for the routing from master to child chatbot (see Routing from a master chatbot), there are the optional attributes intent and utterance as well.