dispatchr is a lightweight outbound communication package for agentic workflows.
Current channels:
- Email via Gmail SMTP using
emayili - X posting with OAuth 1.0a signing
- Telegram bot messaging
The package is intentionally narrow. It focuses on sending and posting rather than building a full communication framework.
# install.packages("pak")
pak::pak("OliverLDS/dispatchr")Each user-facing function accepts an explicit config = list(...). Missing fields
are filled from environment variables when available.
Required fields:
frompassword
Optional fields:
hostdefaults tosmtp.gmail.comportdefaults to587
Environment variables:
DISPATCHR_EMAIL_FROMDISPATCHR_EMAIL_PASSWORDDISPATCHR_EMAIL_HOSTDISPATCHR_EMAIL_PORT
Required fields:
api_keyapi_secretaccess_tokenaccess_secret
Environment variables:
DISPATCHR_X_API_KEYDISPATCHR_X_API_SECRETDISPATCHR_X_ACCESS_TOKENDISPATCHR_X_ACCESS_SECRET
Required fields:
bot_tokenchat_id
Optional fields:
parse_mode
Environment variables:
DISPATCHR_TELEGRAM_BOT_TOKENDISPATCHR_TELEGRAM_CHAT_IDDISPATCHR_TELEGRAM_PARSE_MODE
library(dispatchr)
send_email(
to = "friend@example.com",
subject = "Hello",
body = "Sent from dispatchr",
config = list(
from = Sys.getenv("DISPATCHR_EMAIL_FROM"),
password = Sys.getenv("DISPATCHR_EMAIL_PASSWORD")
)
)post_x(
text = "Hello from dispatchr",
config = list(
api_key = Sys.getenv("DISPATCHR_X_API_KEY"),
api_secret = Sys.getenv("DISPATCHR_X_API_SECRET"),
access_token = Sys.getenv("DISPATCHR_X_ACCESS_TOKEN"),
access_secret = Sys.getenv("DISPATCHR_X_ACCESS_SECRET")
)
)send_telegram(
text = "Hello from dispatchr",
config = list(
bot_token = Sys.getenv("DISPATCHR_TELEGRAM_BOT_TOKEN"),
chat_id = Sys.getenv("DISPATCHR_TELEGRAM_CHAT_ID")
)
)The main send/post functions return a structured list with:
okchannelactionrequest_summaryresponseerrorrate_limit
Telegram chat sync is deliberately not part of the core exported API in this version. The package is currently centered on outbound delivery only.