Home › Forums › BP Better Messages › buddypress/v1/messages REST API
- This topic has 9 replies, 2 voices, and was last updated 1 year, 6 months ago by dennis.
-
AuthorPosts
-
March 8, 2023 at 10:00 pm #19522dennisParticipant
Hi,
Is there somebody that uses the buddypress messages API in combination with SimpleJWT plugin? I am having serious doubts that this API can be used in combination with Better Messages. Although it sometimes works (miracle?) it most of the times reports “There was an error trying to create the message.”. I am a 100% sure I am authenticated and logged in.
Message, POST: buddypress/v1/messages
id = 1, // ThreadId
context = “edit”,
message = “Hello”,
Really like Better Messages (actually the best out there) but if I can’t insert ads and have a robot in the chat, I can not use it (monetization model down the drain). Somebody has experience with buddypress REST API / BM?March 9, 2023 at 5:21 am #19523SupportKeymasterHi there!
Better Messages 2.0+ does not use BuddyPress Rest API.
You can send messages using this way:
https://www.better-messages.com/docs/development/php-functions/new_messageThanks!
March 9, 2023 at 8:19 pm #19524dennisParticipantthanks for pointing it out, missed that disconnect from buddypress, like. However my bot is external and not within wordpress itself. Is there another an endpoint? url I can abuse?
March 9, 2023 at 8:35 pm #19525dennisParticipantPS: like you lost buddypress, we dont need, was just there for better messages. I am c# engineer, not php, will try to hack a simple wordpress endpoint
March 9, 2023 at 11:10 pm #19535dennisParticipantok, hacked-up some wordpress rest endpoints (my first php yeah!)
1. you need simpleJWT plugin to take care of auth.
2. make sure you enable jwt on all endpoints and pass &jwt=<token>
3. this is not production software! as said i am not a PHP engie (assembler, c, c++, c#, pascal but not php 🙂
4. drop the code in functions.php in your themes folder, again not correct, this is not production software, hope bm comes with official api; below is tested and worksMarch 9, 2023 at 11:11 pm #19536dennisParticipant5. to add messages [POST] https://<yoursite>/?rest_route=/better-messages/v1/addmessagetothread&JWT=JWT
// register add message endpoint add_action('rest_api_init', function () { register_rest_route( 'better-messages/v1', '/addmessagetothread',array( 'methods' => 'POST', 'callback' => 'AddMessageToThread', 'permission_callback' => '__return_true' )); }); // implementation function AddMessageToThread($request) { $user = wp_get_current_user(); // check if user is logged in >> return error if ( $user->exists() == false) { return new WP_Error( 'User is not logged in.', 'User is not logged in.', array('status' => 404) ); } $sender_id = $user->ID; $message_id = Better_Messages()->functions->new_message([ 'sender_id' => $sender_id, 'thread_id' => $request['thread_id'], 'content' => $request['content'], 'return' => 'message_id', ]); if ( is_wp_error( $message_id ) ) { $error = $message_id->get_error_message(); return new WP_Error( 'Unable to post message to thread.' . $error, 'Unable to post message to thread.', array('status' => 404) ); } else { $response = new WP_REST_Response($message_id); $response->set_status(200); return $response; } }
March 9, 2023 at 11:11 pm #19537dennisParticipant6.to create new threads and post messages [POST] https://<yoursite>/?rest_route=/better-messages/v1/createnewthread&JWT=JWT
// register create thread endpoint add_action('rest_api_init', function () { register_rest_route( 'better-messages/v1', '/createnewthread',array( 'methods' => 'POST', 'callback' => 'CreateNewThread', 'permission_callback' => '__return_true' )); }); function CreateNewThread($request) { $user = wp_get_current_user(); // check if user is logged in >> return error if ( $user->exists() == false) { return new WP_Error( 'User is not logged in.', 'User is not logged in.', array('status' => 404) ); } $sender_id = $user->ID; $thread_id = Better_Messages()->functions->new_message([ 'sender_id' => $sender_id, 'content' => $request['content'], 'subject' => $request['subject'], 'recipients' => $request['recipients'], 'return' => 'thread_id', 'error_type' => 'wp_error' ]); $response = new WP_REST_Response($thread_id); $response->set_status(200); return $response; }
hope to save somebody else some time. don’t complain when i killed you site.
March 23, 2023 at 9:46 pm #19559dennisParticipantHi,
See that there is already API provisioning in the source, why isn’t there documentation? Is it for internal use?
-
AuthorPosts
- You must be logged in to reply to this topic.