Short answer
HubSpot's developer docs: the HubSpotConversations.widget object has methods such as load, open and refresh, and can load the widget in an open state. Query parameters let buttons and links open specific chatflows. inlineEmbedSelector embeds the widget inside a page element.
1. Chatflows
Chatflows in my demo portal.

2. Example
<button onclick="window.HubSpotConversations.widget.open()">Chat with us</button>