Yes! Now OpenHAB can send WhatsApp Text Messages thanks to the CallMeBot Free API. You just need OpenHAB to execute a WGET or CURL command to send WhatsApp Messages. Find below the step-by-step instructions to implement it.

Setup:

You need to get the apikey form the bot before using the API:

1. Add the phone number +34 644 78 33 97 into your Phone Contacts. (Name it it as you wish)

  1. Send this message "I allow callmebot to send me messages" to the new Contact created (using WhatsApp of course)
  2. Wait until you receive the message "API Activated for your phone number. Your APIKEY is 123123" from the bot.
    Note: If you don't receive the ApiKey in 2 minutes, please try again after 24hs.
  3. The WhatsApp message from the bot will contain the apikey needed to send messages using the API.

You can send text messages using the API after receiving the confirmation.

Example:
58

5. Enjoy

5. Note, If you need any of the capabilities listed below, please check https://textmebot.com (low cost) or https://www.twilio.com/ (best official provider)
    - Send messages to others
    - Send messages to Groups
    - Send messages from your whatsapp number
    - Send Images
    - Send Buttons
    - Send documents
    - Receive the answers

How to send a WahtsApp message using the API

You need to use the following URL:

https://api.callmebot.com/whatsapp.php?source=OpenHAB&phone=[phone]&apikey=[apikey]&text=[text]

Parameters:
[phone] is the destination phone number to send the message (For example: +34123123123)
[apikey] is the apikey that you received in the step 4 above
[text], is the message that you want to send. You can encode the URL (i.e. %20 istead of space, %0A for new lines) or use the symbol "+" for the spaces. WhatsApp formatting characters are allowed (i.e "*" for bold, etc.). Check here how to include emoticons in the message 👍.

For example, to send the WhatsApp text message "Alarm from OpenHAB to inform you that the alarm has been triggered" to the phone number +34 123 123 123, the URL will be:

https://api.callmebot.com/whatsapp.php?source=openHAB&phone=+34123123123&apikey=987654&text=Alarm+from+OpenHAB+to+inform+you+that+the+alarm+has+been+triggered

To do that with OpenHAB is pretty easy! You have two (or more) different ways to do it:

Instructions (OPTION 1): Using ECMAScript in OH3

You can create an ECMAScript in the new OpenHab v3 using the HttpUtil.executeUrl command.

Code:

var HttpUtil = Java.type("org.openhab.core.io.net.http.HttpUtil")
var urlmessage = encodeURI("This is a test from openHAB sending you a WhatsApp Message becaue something is happening in your house")
HttpUtil.executeUrl("GET", "https://api.callmebot.com/whatsapp.php?source=openHAB&phone=+34123123123&apikey=12345&text=" + urlmessage , 2000)

Instructions (OPTION 2): Using the OpenHab HTTP Actions:

Use the sendHttpGetRequest action like this:

import java.net.URLEncoder
rule "Test WhatsApp Send Message"
when     
Item TestWhatsApp changed to ON
then
val urlmessage = URLEncoder::encode("This is a test from openHAB sending you a WhatsApp Message becaue something is happening in your house", 'UTF-8')
SendHttpGetRequest("https://api.callmebot.com/whatsapp.php?source=openHAB&phone=+34123123123&apikey=123123&text=" + urlmessage)
end
In this example, we are using the URLEncoder function to format properly the message passed in the URL. If no lang (language) parameter is set, then english is used by default.
 

 Instructions (OPTION 3): Using the OpenHab Exec Actions:

rule "Another WhatsApp Send Test"
when
    Item WhatsAppTest changed to ON
then
    var MessageWhatsApp = ("La alarma esta sonando en la cocina. Mirar las camaras por favor")

    MessageWhatsApp = MessageWhatsApp.replace(" ", "%20")
executeCommandLine ("wget https://api.callmebot.com/whatsapp.php?source=openHAB&phone=+34123123123&apikey=567567&text="+MessageWhatsApp)
 

In this example, I replaced the " " (spaces) by "%20" to encode the URL. And I used the wget shell command to execute the GET command needed by the API.

Problems?

If you have problems, like not receiving the Call on Telegram, or not receiving the WhatsApp messages,  try to test the CallMeBot API using your Web Browser:

  • Telegram Phone Calls using Web Browser: here
  • Telegram Text Messages using Web Browsers: here
  • WhatsApp Text Messages using Web Browser: here

You might get some errors on the screen that will help you to identify the problem. (Ex: Calls disabled in the Telegram Security Settings, WhatsApp not activated, etc.)

If you still have problems using the API, don’t hesitate to contact me in Telegram @callmebot_com or by email at [email protected]. Remember to Follow me on Twitter to get news about coming features, changes, invitations, etc.