Skip to content

Instantly share code, notes, and snippets.

@T1mmyK0
Last active March 9, 2024 17:28
Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save T1mmyK0/2e8863919ad9523e12710d844859dd02 to your computer and use it in GitHub Desktop.
Save T1mmyK0/2e8863919ad9523e12710d844859dd02 to your computer and use it in GitHub Desktop.
Example of how to process AutoResponder requests with your web server 🤖 Add this php file to your web server and enter the complete URL in AutoResponder (e.g. https://www.example.com/api_autoresponder.php).
<?php
// required headers
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
// add this php file to your web server and enter the complete url in AutoResponder (e.g. https://www.example.com/api_autoresponder.php)
// to allow only authorized requests, you need to configure your .htaccess file and set the credentials with the Basic Auth option in AutoResponder
// access a custom header added in your AutoResponder rule
// replace XXXXXX_XXXX with the name of the header in UPPERCASE (and with '-' replaced by '_')
$myheader = $_SERVER['HTTP_XXXXXX_XXXX'];
// get posted data
$data = json_decode(file_get_contents("php://input"));
// make sure json data is not incomplete
if(
!empty($data->query) &&
!empty($data->appPackageName) &&
!empty($data->messengerPackageName) &&
!empty($data->query->sender) &&
!empty($data->query->message)
){
// package name of AutoResponder to detect which AutoResponder the message comes from
$appPackageName = $data->appPackageName;
// package name of messenger to detect which messenger the message comes from
$messengerPackageName = $data->messengerPackageName;
// name/number of the message sender (like shown in the Android notification)
$sender = $data->query->sender;
// text of the incoming message
$message = $data->query->message;
// is the sender a group? true or false
$isGroup = $data->query->isGroup;
// name/number of the group participant who sent the message if it was sent in a group, otherwise empty
$groupParticipant = $data->query->groupParticipant;
// id of the AutoResponder rule which has sent the web server request
$ruleId = $data->query->ruleId;
// is this a test message from AutoResponder? true or false
$isTestMessage = $data->query->isTestMessage;
// process messages here
// set response code - 200 success
http_response_code(200);
// send one or multiple replies to AutoResponder
echo json_encode(array("replies" => array(
array("message" => "Hey " . $sender . "!\nThanks for sending: " . $message),
array("message" => "Success ✅")
)));
// or this instead for no reply:
// echo json_encode(array("replies" => array()));
}
// tell the user json data is incomplete
else{
// set response code - 400 bad request
http_response_code(400);
// send error
echo json_encode(array("replies" => array(
array("message" => "Error ❌"),
array("message" => "JSON data is incomplete. Was the request sent by AutoResponder?")
)));
}
?>
@T1mmyK0
Copy link
Author

T1mmyK0 commented Jan 2, 2023

@Ravi-34 Great idea! I'm currently adding answer replacements for the headers value field. It will be available in the next version. There is no specific server side code necessary.

@Ravi-34
Copy link

Ravi-34 commented Jan 25, 2023

@T1mmyK0 In a rule, can we set a fixed reply message and also then connect to our web server?
Example. In a rule, show a reply message "Please Wait...." and then show the replies from the web sever code.

Is this possible in the app now or technically possible in later version?

Thanks

@T1mmyK0
Copy link
Author

T1mmyK0 commented Jan 25, 2023

@Ravi-34 No, I think it's not needed. Because as a user I'm waiting for the reply anyways. And if I leave the chat I only want to receive a notification about the final reply.

@Ravi-34
Copy link

Ravi-34 commented Jan 25, 2023

@Ravi-34 No, I think it's not needed. Because as a user I'm waiting for the reply anyways. And if I leave the chat I only want to receive a notification about the final reply.

@T1mmyK0 Thanks for reply.

Just had a thought, it would be nice from our side to inform user that information has received and also is being processed.

@T1mmyK0
Copy link
Author

T1mmyK0 commented Jan 25, 2023

@Ravi-34 Yea, would be cool too. But I think it makes things just way more complicated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment