@getuserfeedback/chat
v0.10.0
Published
Headless getuserfeedback Chat API client
Maintainers
Readme
@getuserfeedback/chat
Headless TypeScript client for the getuserfeedback.com Chat API.
Use this package when you want to build your own user-facing conversation UI while getuserfeedback.com keeps the conversation history.
Install
npm install @getuserfeedback/chatCreate a client
import { createChatClient } from "@getuserfeedback/chat";
export const chat = createChatClient({
auth: {
jwt: {
token: await fetchGetUserFeedbackChatToken(),
},
},
});auth.jwt.token is sent as the Authorization: Bearer ... credential. Your
backend or auth provider should mint this JWT for getuserfeedback.com with:
aud: https://getuserfeedback.com/v1/apps/{appId}
sub: the stable identity for this user in your appThe chat client does not accept a separate identify() call or per-request
identity. getuserfeedback.com uses the signed app identity in the bearer token
to decide which conversations the user can read or reply to.
In proxy mode, send your own session token to your backend. Your backend should authenticate the user, then call getuserfeedback.com with a JWT minted for your getuserfeedback.com app.
export const chat = createChatClient({
baseUrl: "https://app.example.com/api/chat/v1",
auth: {
jwt: {
token: await fetchAppSessionToken(),
},
},
});Custom baseUrl values are used exactly, including any path prefix.
Refresh or clear auth
The auth shape matches the widget SDK.
await chat.configure({
auth: {
jwt: {
token: await fetchGetUserFeedbackChatToken(),
},
},
});
await chat.configure({
auth: {
jwt: null,
},
});List conversations
const { conversations, nextCursor } = await chat.conversations.list();List messages
const { conversations } = await chat.conversations.list();
const { messages, nextCursor } = await chat.messages.list({
conversationId: conversations[0].id,
});Send a user message
const { conversations } = await chat.conversations.list();
const { message } = await chat.messages.send({
conversationId: conversations[0].id,
text: "Hello from my app.",
});Errors
Failed API responses throw ChatApiError.
import { ChatApiError } from "@getuserfeedback/chat";
try {
await chat.conversations.list();
} catch (error) {
if (error instanceof ChatApiError) {
console.error(error.status, error.code, error.message);
}
}