Skip to content
✍ Javascript SDK for Point API autocomplete and reply suggestions
TypeScript Shell
Branch: master
Clone or download
agski Merge pull request #57 from PointMail/dev
Check if User is active
Latest commit bf670ac Aug 22, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github README Deployment section and PR tempalte Jul 12, 2019
.vscode tslint config & autofix on save Jul 24, 2019
__mocks__ Fix unit tests Jul 29, 2019
__tests__ Fix unit tests Jul 29, 2019
docs Update docs with new param names Jan 23, 2019
scripts
src BACKEND-859 Check if User is active Aug 19, 2019
.gitignore Increment version; add to gitignore Mar 29, 2019
.travis.yml Back to dev tag Jul 24, 2019
README.md README Deployment section and PR tempalte Jul 12, 2019
package-lock.json Bumping to 1.1.29 [skip ci] Jul 29, 2019
package.json
tsconfig.json parcel bundling, umd support Aug 10, 2018
tslint.json tslint config & autofix on save Jul 24, 2019

README.md

✍ Point API Javascript SDK

Point API's js-sdk provides an easy server-side and client-side interface for Point API.

npm Build Status forthebadge

Getting Started

Installation

npm install @point-api/js-sdk

Usage

Server-side

To use the Point API, you must first use your API key to retrieve an auth code. An auth code is a JWT that authenticates your client with the Point API. To keep your API key private, make a server-side request to retrieve an auth code, which you can then pass to your client for connecting to our API. Each auth code expires in 6 hours, so be sure to obtain a new auth code for your client after expiration.

The following is a code sample for requesting a Point API auth code. Make sure to substitute your API_KEY and your client's EMAIL_ADDRESS

// Request an auth code (JWT) from the Point API /auth endpoint
const response = await fetch(
  "https://v1.pointapi.com/auth?emailAddress=<EMAIL_ADDRESS>",
  {
    headers: {
      Authorization: "Bearer <API_KEY>"
    },
    method: "POST"
  }
);
// returns {"jwt":"<AUTH_CODE>"}

// Parse the json response and extract the JWT into a variable
const authCode = (await response.json()).jwt;

Client-side

Your client can start using the Point API once it has a valid auth code.

autocomplete

Use the autocomplete function to get a list of Autocomplete suggestions. You can pass in seed text to filter for suggestions that include specific words:

const api = new PointApi("<EMAIL_ADDRESS>", "<AUTH_CODE>");
// A websockets connection is automatically established on api init

// Get Autocomplete suggestions with the seed text "I can"
api.autocomplete("I can");
// { responseId: "12345", suggestions: [{suggestion: "I can call you later today.", "type": "suggestion", "userAdded": false}, ...]}

setContext

You can also set the context to refine Autocomplete suggestions. The context refers to a message that you're responding to, such as an email that you have received. Once the context has been set, searchSuggestions may return an entirely different list of suggestions:

// Set context
api.setContext("Hey Alex, when can you send me the slide deck?");
api.autocomplete("I can");
// { responseId: "12345", suggestions: [{suggestion: "I can get it to you this afternoon.", "type": "suggestion", "userAdded": false}, ...]}

reply

Point API also provides Reply suggestions for responding to entire messages (currently in beta). Use the getReplies function to receive Reply suggestions. You can play around with this feature here.
Note: this function will also set the previousMessage for the whole session

// Get replies just as you would set the previousMessage:
api.reply("How are you?");

Point finds "prompts" in your context and suggest up to 3 replies for each prompt. It also includes a "confidence" field in each reply suggestion, ranging from a score of 1 (possibly correct) to 3 (very likely correct). This reveals how certain we are about the accuracy of our suggestions.

Example:

// If multiple prompts are detected, replies will be generated for all of them and returned in a list
{
  responseId: "response_id",
  replies: [
  {
    prompt: "How are you?",
    suggestions: [
      {
        confidence: 3,
        text: "I'm doing okay, what about you?"
      },
      {
        confidence: 3,
        text: "I'm doing fantastic."
      },
      {
        confidence: 3,
        text: "I'm great! How are you?"
      }
    ]
  }
]};

feedback

You can also help us train our models by reporting user feedback such as chosen suggestions

api.feedback("response_id", "I'm doing okay, what about you?", "positive");

Documentation

Class: PointApi

Point Websockets Api Instance

Properties

Methods


constructor

new PointApi(emailAddress: string, apiKey: string, searchType?: boolean): PointApi

Parameters:

Param Type Description
emailAddress string Email address of Point user
apiKey string API key of Point client
Default value searchType boolean false

Returns: PointApi


Properties

apiKey

● apiKey: string

Api key of Point client


emailAddress

● emailAddress: string

Email address of Point user


Methods

autocomplete

autocomplete(seedText: string): Promise< AutocompleteResponse | null>

Query PointApi with seed text to get predicted suggestions

Parameters:

Param Type Description
seedText string The text to base suggestion predictions off of
Optional currentContext undefined | string

Returns: Promise< AutocompleteResponse | null>


feedback

feedback(responseId: string, suggestion: _ string | string[], type: _ "positive" | "negative"): Promise<void>

Give feedback on Point Api's suggestions

Parameters:

Param Type
responseId string
suggestion string | string[]
type "positive" | "negative"

Returns: Promise<void>


setContext

setContext(previousMessage: string, contextType: string): Promise<string>

Set the context of the autocomplete session

Parameters:

Param Type
previousMessage string
contextType string

Returns: Promise<string>


reply

reply(previousMessage: string, contextType: string): Promise< ReplyResponse | null>

Get reply suggestions given some recieved text

Parameters:

Param Type Default value
previousMessage string -
Default value contextType ContextType "text"

Returns: Promise< ReplyResponse | null>

Types:

Reply

Properties:

● confidence: number
● text: string

ReplyMeta

Properties:

● prompt: string
● suggestions: Reply[]
● type: string

ReplyResponse

Properties:

● replies: ReplyMeta[]
● responseId: string

SuggestionMeta

Properties:

● suggestion: string
● type: string
● userAdded: boolean

AutocompleteResponse

● responseId: string
● seedText: string
● suggestions: SuggestionMeta[]

Deployment

This library is deployed to npmjs.com.

Travis CI pipeline is configured to release any code from master branch. By default the package version is automatically incremented like a patch (e.g. from v0.8.1 to v0.8.2). A git tag for corresponding release is created and can be seen here.

Deployment steps

  • Before merging to master make sure that previous release was merged to master. This means that package.json has the same version as latest in npmjs.com.
  • If versions differ, look for a git tag for the latest release (e.g. v1.1.23) and include it in the PR.
  • Now you can merge to master and a new release should be deployed to npmjs.com.
  • If you forget to include latest version, your release will fail. The easiest fix is to create another PR that only includes skipped version changes from version tag (e.g. v1.1.23). After merging in, a new release should be pushed to npmjs.com including all new changes.

Additional resources

Point API is the engine that powers autocompletion, which means you can customize the frontend implementation to fit your production needs. If you want to include a frontend solution that works out-of-the-box, we have a sample autocomplete dropdown (implemented as a React component) that automatically integrates with the API. You can plug in our autocomplete dropdown to have a fully-functional autocomplete on your platform, app, or website. A sample implementation can be found here

You can’t perform that action at this time.