Skip to main content

Chat Consultations

Initiating the Chat Service​

Initialize the chat service by calling AltibbiChat().init() with the Consultation object. This connects the user to the chat provider (Sendbird).

try {
User user = await AltibbiChat().init(consultation: consultation);
print(\"Connected as: ${user.userId}\");
} catch (e) {
print(\"Chat Initialization Error: $e\");
}

Adding Event Listeners​

Use GroupChannelHandler to handle incoming messages, typing status, and other events.

class MyChannelHandler extends GroupChannelHandler {
@override
void onMessageReceived(BaseChannel channel, BaseMessage message) {
print(\"New Message: ${message.message}\");
}

@override
void onTypingStatusUpdated(BaseChannel channel) {
print(\"Typing status changed\");
}
}

AltibbiChat().addChannelHandler('myUniqueId', MyChannelHandler());

Loading Previous Messages​

You can retrieve history using the PreviousMessageListQuery:

GroupChannel groupChannel = await AltibbiChat().getGroupChannel(consultation);
List<BaseMessage> messages = await groupChannel.getMessagesByTimestamp(
DateTime.now().millisecondsSinceEpoch,
MessageListParams(),
);

Sending Messages​

GroupChannel groupChannel = await AltibbiChat().getGroupChannel(consultation);
groupChannel.sendUserMessage(UserMessageCreateParams(message: \"Hello Doctor\"));

Typing Indicators​

groupChannel.startTyping();
groupChannel.endTyping();