Home › Forums › BP Better Messages › buddypress/v1/messages REST API
- This topic has 9 replies, 2 voices, and was last updated 1 year, 11 months ago by
dennis.
-
AuthorPosts
-
March 8, 2023 at 10:00 pm #19522
dennis
ParticipantHi,
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 #19523Support
KeymasterHi 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 #19524dennis
Participantthanks 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 #19525dennis
ParticipantPS: 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 #19535dennis
Participantok, 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 #19536dennis
Participant5. 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 #19537dennis
Participant6.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 #19559dennis
ParticipantHi,
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.