Frappé Chat - achillesrasquinha/frappe-noob GitHub Wiki

To create a new Frappeé Chat Object, simply:

const chat = new frappe.Chat(); // appends to "body"
chat.render();

This then goes ahead and renders a frappe.Chat.Widget.Popper component onto your screen.

Frappé Chat also comes with a page view that can be rendered as follows.

const chat = new frappe.Chat({ layout: frappe.Chat.Layout.PAGE });
chat.render();

Table of Contents

Developer Guide

  • Client-Side Scripting

Chat Profile


  • Create

Creates a Chat Profile for the current logged in user.

URL Requires Auth
/api/method/frappe.chat.doctype.chat_profile.chat_profile.create yes

Payload

Parameter Example Required Default Description
user [email protected] Yes The email of the session user.
exists_ok true No false throws an error if Chat Profile already exists.
fields "status" No null The field(s) need to be retrieved. By default, retrieves all fields.
frappe.chat.profile.create((profile) => {
	// do something with "profile"
})
// ...or as a Promise
frappe.chat.profile.create().then(profile => {
	// do something with "profile"
})

Retrieve optional fields you require by passing them as the very first parameter (a single field or a list of 'em). For instance, let's retrieve the status of the user.

frappe.chat.profile.create("status", (profile) => {
	// do something with "profile".
})

Or a list of 'em.

frappe.chat.profile.create(["status", "chat_background"], (profile) => {
	// do something with "profile".
})
  • Update

Update the Chat Profile of a user.

const update = { status: "Offline" }
frappe.chat.profile.update(frappe.session.user, update)
  • On Update

Receives subscribed Chat Profile updates for the current logged in user.

frappe.chat.profile.on.update((user, update) => {
        // user   -> name of the user
        // update -> field, value pair that has been updated
})

Chat Room


  • Get

Retrieves information for Chat Room(s) for the current logged in user.

URL Requires Auth
/api/method/frappe.chat.doctype.chat_room.chat_room.get yes

Payload

Parameter Example Required Default Description
user [email protected] Yes The email of the session user.
names CR00001 No null Name/List of Chat Rooms to retrieve information about.
fields "room_name" No null The field(s) need to be retrieved for each Chat Room retrieved. By default, retrieves all fields.
frappe.chat.room.get((rooms) => {
	// do something with "rooms".
})
// ...or as a Promise
frappe.chat.room.get().then(rooms => {
	// do something with "room(s)"
})

The first argument is are name(s) you require to retrieve after the said Chat Profile has been created (defaults to null which retrieves you all fields). For instance, let's retrieve the information for the room CR00001.

frappe.chat.room.get("CR00001").then(room => {
	// do something with "room"
})
// ...or a list of 'em
frappe.chat.room.get(["CR00001", "CR00002"]).then(rooms => {
	// do something with "rooms"
})

The second argument is are field(s) you require to retrieve after the said Chat Profile has been created (defaults to null which retrieves you all fields). For instance, let's retrieve the avatar of all Chat Rooms.

frappe.chat.room.get(null, "avatar", (rooms) => {
	// do something with "room(s)".
})
// ...or a list of 'em
frappe.chat.room.get("CR00001", ["room_name", "type"], (rooms) => {
	// do something with "room(s)".
})
  • Subscribe

Subscribe to a chat room to listen to continuous updates.

frappe.chat.room.subscribe("CR00001")
// ...or a list of 'em
frappe.chat.room.subscribe(["CR00001", "CR000002"])

Chat Component

Frappé Utilities

frappe._.fuzzy_search(query, dataset, options)