Viber 6.5 introduced a new Public Account API, which third parties can use to send and receive messages between a Public Account (run by a company or service) and a Viber user.
Public Accounts contain two communications channels:
When creating a new Public Account you will receive a Public Account token which is used for all communication with the Viber Back End.
In order to enable communication between the Viber Back End and the Public Account, the Public Account must call the set web hook request with the Public Account token providing the Public Account’s URL for receiving the web hook. There is also an optional parameter (v6.5.1 and up) to define which events it will receive (such as delivered and seen notifications when clients receive and read messages). Once the set web hook request is received by the Viber Back End, it will validate the URL and send a response.
All communication between Public Accounts and Viber users can only be initialized by the Viber user starting a new conversation or subscribing to the Public Account (opt–in) (in both cases the user will be subscribed to the Public Account). When a Viber user subscribes to the Public Account, the Public Account will receive the following information about the user:
Once a Viber user subscribes to the Public Account, the Public Account can send messages to the Viber user freely (not only in response to a message from the user). Viber users can unsubscribe at any time from the Public Account, which will immediately block any further communication from the Public Account to the user. All messages will include a unique message token and timestamp created by the Viber Back End and will be synchronized between all users’ devices. Messages sent to the Public Account will also include the user’s Viber name and avatar.
200 HTTPresponse code to the message sent to it. Viber Back End Public Account API servers implement a limited retry mechanism to try to resend the message while the Public Account service’s server is offline, but if the Public Account service server is offline for a continuous amount of time, the message will not be delivered to the Public Account.