Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
quiq-chat
Advanced tools
Library to help with network requests to create a webchat client for Quiq Messaging
Library to handle the communication with Quiq Messaging APIs to build a web chat app
Install quiq-chat
with
npm install --save quiq-chat
or
yarn add quiq-chat
QuiqChatClient
The default export of quiq-chat
is the QuiqChatClient
class which will fetch information about the current webchat, initialize a websocket connection, and allow you to register callbacks so that you can keep your app's UI in sync with the webchat state.
All the functions to register callbacks return the QuiqChatClient
object so that you can chain them together. You also need to call start()
to connect to Quiq Messaging. The start
method returns a promise that resolves to the QuiqChatClient
, so you can add a callback that will be executed after the connection is opened;
import QuiqChatClient from 'quiq-chat';
const client = new QuiqChatClient()
.onNewMessages(messages => {
// Update your app with the new array of messages
})
.onAgentTyping(typing => {
// Show or hide the typing indicator
})
.onRegistration(() => {
// Hide form, or show main app
})
.onConnectionStatusChange(connected => {
// Show the connection status of the app
})
.onError(error => {
// Show some error message
})
.onRetryableError(error => {
// Show some error message
}).
.onErrorResolved(() => {
// Remove the error message
})
.start()
.then(client => {
// Run some code after the webchat app is connected
});
QuiqChatClient
Before quiq-chat
can call any APIs, you need to call init
and pass in your site's host (i.e. https://your-company.goquiq.com
) and the contact point you want your chat client to connect to
import {init, fetchConversation} from 'quiq-chat';
init({
HOST: 'https://your-company.goquiq.com',
CONTACT_POINT: 'default',
});
// Now we can call the API
fetchConversation().then(conversation => {
// Do something with the conversation object
});
Trying to call any other methods before init
will throw an error
Called whenever new messages are received. messages
is an array containing full transcript of the current chat
Called whenever the support agent starts or stops typing
Called whenever there is a non-retryable error or an error that has exceeded the maximum number of retries from the API.
Called whenever there is a retryable error from the API
Called whenever any error from the API has been resolved
Called when Register event is received through a websocket message
Called when a connection is established or terminated
Called when quiq-chat gets in a fatal state and page holding webchat needs to be refreshed
Establishes the connection to QuiqMessaging
Disconnects the websocket from Quiq
Opens a websocket connection and hook up some callbacks
import {subscribe} from 'quiq-chat';
subscribe({
onConnectionLoss() {
// Called when the connection is lost
},
onConnectionEstablish() {
// Called when the connection is established or reopened after a disconnect
},
onMessage(message) {
// React to the websocket message
},
onTransportFailure(error, req) {
// Called if websockets don't work and we need to fall back to long polling
},
onClose() {
// Called if the websocket connection gets closed for some reason
},
onBurn(burnData) {
// Called if the client gets in a bad state and can't make any more network requests (need to hit refresh)
}
});
The message
object in handleMessage
is of the type
{
data: Object,
messageType: 'Text' | 'ChatMessage',
tenantId: string
}
The ApiError
object in onError
andonRetryableError
is of the type
{
code?: number,
message?: string,
status?: number,
}
Unsubscribes from the current websocket connection
Fetches the current conversation object from Quiq
Sends the text as a webchat message in to Quiq Messaging
Sends a message to Quiq Messaging that the end user has opened the chat window
Sends a message to Quiq Messaging that the end user has closed the chat window
Sends a message to Quiq Messaging that the end user is typing and what they've typed in the message field
Fetches whether or not there are agents available for the contact point the webchat is connected to
Submits a map of custom (key, value)
pairs to be included in the data for the current chat.
Method accepts a single parameter, a JavaScript object with values of type String
.
key
is limited to 80 characters and must be unique; value
is limited to 1000 characters.
Utility function to tell the client if quiq-chat has the capability to set its required data.
Note this will return true if quiq-chat is able to set its required data in any way,
whether persistent or not. This means the session may not persist through page flips.
If this is false, quiq-chat will block all API calls.
Utility function to tell the client if quiq-chat has the capability to set its required data in a persistent way. If this returns true, it means its safe to assume session data will persist through page flips.
Returns whether the end-user has performed a meaningful action, such as submitting the Welcome Form, or sending a message to the agent.
Returns the last state of chat's visibility. Only includes actions that call the joinChat and leaveChat events. For instance, if your user maximizes chat, but you never call joinChat, isChatVisible won't reflect this change. Can be used to re-open webchat on page turns if the user had chat previously open. Defaults to false if user has taken no actions.
{
authorType: 'Customer' | 'Agent',
text: string,
id: string,
timestamp: number,
type: 'Text' | 'Join' | 'Leave',
}
{
id: string,
messages: Array<Message>,
}
FAQs
The quiq-chat library has been officially deprecated. Contact Quiq for more information.
The npm package quiq-chat receives a total of 24 weekly downloads. As such, quiq-chat popularity was classified as not popular.
We found that quiq-chat demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.