evolution 0.1.0
Breaking changes
- The global timeout option was renamed from
evoapi.timeouttoevolution.timeoutto match the package name. The previous option name was silently ignored due to a mismatch betweenzzz.Rand the internal request function (#1).
New features
send_list(): sends interactive list messages with sections and selectable rows, mapping to the Evolution API v2sendListendpoint.check_is_whatsapp(): verifies whether phone numbers are registered on WhatsApp via thechat/whatsappNumbersendpoint.print.evo_client(): new S3 print method that displays instance name and base URL when inspecting a client object.
Improved error handling
.evo_post()now extracts and surfaces the actual API error message from the JSON response body (fieldsresponse$messageormessage), instead of showing a generic “Evolution API error (status)” string.Non-JSON error responses (e.g., HTML from a 502/503 gateway error) are now handled gracefully instead of crashing with a parse error.
All
send_*()functions now validate required arguments up front with clear cli error messages (e.g.,"'number' must be a single non-empty character string").evo_client()uses descriptivecli::cli_abort()messages instead ofstopifnot(), with hints like"Use Sys.getenv(\"EVO_APIKEY\")"for the API key argument.
Improved logging (verbose mode)
Verbose output now includes response timing (e.g.,
✔ HTTP 201 (0.34s)).Verbose output now shows a preview of the response body (first 500 characters) to help with debugging.
Large base64
mediafields are truncated in verbose logs to keep output readable.
Bug fixes
jid()now strips all non-digit characters (including+) before appending@s.whatsapp.net. Previously,jid("+5581...")produced an invalid JID with the+preserved.send_list():footerparameter now defaults to""instead ofNULL, because the Evolution API requiresfooterTextto be present in the request body (HTTP 400 otherwise).send_sticker()andsend_whatsapp_audio()now pass media through.normalize_media(), enabling local file paths (e.g.,"~/Downloads/sticker.webp") to be auto-encoded to base64. Previously onlysend_media()supported this..normalize_media()now callspath.expand()so that~in file paths is correctly resolved to the user’s home directory.send_whatsapp_audio()removed unused parameters (link_preview,mentions_everyone,mentioned) that are not part of thesendWhatsAppAudioAPI endpoint.send_buttons()now emits acli::cli_warn()at runtime alerting that interactive buttons are not supported on the Baileys (WhatsApp Web) connector and may be discontinued. The warning suggestssend_poll()as an alternative.send_list()now emits acli::cli_warn()at runtime alerting that interactive list messages are not supported on the Baileys (WhatsApp Web) connector and may be discontinued. The warning suggestssend_poll()as an alternative.
Documentation
Fixed author name typo in DESCRIPTION: “Vaconcelos” → “Vasconcelos”.
README now accurately lists all exported functions including
send_list()andcheck_is_whatsapp().README includes new sections: verbose output example, configuration table, and
send_list()/check_is_whatsapp()usage examples.All roxygen documentation improved with
@description,@examples,@seealsocross-references, and more specific@returndescriptions.Added
jsonlitetoImports(used for response preview in verbose mode).
evolution 0.0.1
CRAN release: 2025-11-20
- Initial CRAN release.
- Core messaging functions:
send_text(),send_status(),send_media(),send_whatsapp_audio(),send_sticker(),send_location(),send_contact(),send_reaction(),send_buttons(),send_poll(). -
evo_client()factory with httr2 retry and apikey header. -
jid()helper for building WhatsApp JIDs.
