Skip to main content

OVOS ChatEngine agent plugin that proxies turns through a connected OVOS messagebus

Project description

OVOS Messagebus Chat Plugin

An OVOS ChatEngine agent plugin that proxies user turns through a connected OpenVoiceOS messagebus. Each continue_chat call sends the latest user utterance to the OVOS pipeline and collects the synthesized response.

The plugin reuses the SessionManager-owned Session for each session_id, so multi-turn conversations preserve OVOS-side state (active skills, entity context, response-mode flags, language). Skills that rely on MycroftSkill.get_response(), common_query disambiguation, or context-managed intents keep working across turns.

Installation

pip install ovos-messagebus-chat-plugin

Usage

Via plugin discovery

The plugin registers under opm.agents.chat with name ovos-messagebus. Any OVOS component that loads chat-agent plugins (e.g. ovos-persona) will pick it up automatically:

from ovos_plugin_manager.agents import load_chat_agent_plugin

agent_cls = load_chat_agent_plugin("ovos-messagebus")
agent = agent_cls(config={"autoconnect": True, "host": "127.0.0.1", "port": 8181})

Direct programmatic use

from ovos_bus_client import MessageBusClient
from ovos_messagebus_chat_plugin import OVOSMessagebusChatAgent
from ovos_plugin_manager.templates.agents import AgentMessage, MessageRole

bus = MessageBusClient()
bus.run_in_thread()
bus.connected_event.wait()

agent = OVOSMessagebusChatAgent(bus=bus, config={"timeout": 15})

reply = agent.continue_chat(
    [AgentMessage(role=MessageRole.USER, content="what time is it?")],
    session_id="kitchen",
)
print(reply.content)

# next turn — same session_id reuses the Session, so OVOS skills that need
# follow-up context (get_response, common_query, dialog flow) keep working
reply = agent.continue_chat(
    [
        AgentMessage(role=MessageRole.USER, content="what time is it?"),
        AgentMessage(role=MessageRole.ASSISTANT, content=reply.content),
        AgentMessage(role=MessageRole.USER, content="and tomorrow morning?"),
    ],
    session_id="kitchen",
)

Configuration

Key Type Default Notes
autoconnect bool False Open an internal MessageBusClient on init.
host str 127.0.0.1 OVOS messagebus host (only used with autoconnect).
port int 8181 OVOS messagebus port (only used with autoconnect).
timeout int 30 Per-utterance wait, refreshed on every speak to allow multi-speak.
source_name str messagebus_chat_agent Value set on outgoing context.source. Useful for OVOS routing rules.

Documentation

Full developer docs live in docs/:

License

Apache 2.0. See LICENSE.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ovos_messagebus_chat_plugin-0.1.1a1.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ovos_messagebus_chat_plugin-0.1.1a1-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file ovos_messagebus_chat_plugin-0.1.1a1.tar.gz.

File metadata

File hashes

Hashes for ovos_messagebus_chat_plugin-0.1.1a1.tar.gz
Algorithm Hash digest
SHA256 050e73a00e5ba3098e3dac6e0d0bc33727d59257b00a4db65cb90fa7f20a4a9a
MD5 00c1aebeb696e791ba688d81c408d378
BLAKE2b-256 7e92033025eaab27eaeb3231c7601a9c87aa3b2292273635351716458a00689a

See more details on using hashes here.

File details

Details for the file ovos_messagebus_chat_plugin-0.1.1a1-py3-none-any.whl.

File metadata

File hashes

Hashes for ovos_messagebus_chat_plugin-0.1.1a1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd375370823fe1df91fd3820646c9baed5e3290de80273f2352568984d26fb3a
MD5 34c4018ca2a208da0ebe00f7dfa13517
BLAKE2b-256 28d432f448a1433e44d0ea3b54d34c182ed44c07d6608afd8666d3abbcb8a3d2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page