API Conversations

Good evening! I am trying to create a conversation programmatically via the API, but I get this error:

INFO: {“code”:422,“message”:“Couldn’t accept or process the conversation”}

The request I am submitting:

What could be the problem?

Before that, I created aspect and added contact to sender and recipient

Everything looks alright from what I can see, can you add

Rails.logger.error { e }

before the following line: https://github.com/diaspora/diaspora/blob/develop/app/controllers/api/v1/conversations_controller.rb#L45 ?

Did not work:


image

Ah sorry, you have to add => e at the end of the previous line too, I overlooked it’s missing :slight_smile:

[2020-09-30T08:59:49] ERROR PID-68387 TID-70123929786720 Rails: ActiveRecord::RecordNotFound ActiveRecord::RecordNotFound
/home/diaspora/diaspora/app/models/person.rb:222:in find_from_guid_or_username' /home/diaspora/diaspora/app/controllers/api/v1/conversations_controller.rb:70:in block in recipient_ids’
/home/diaspora/diaspora/app/controllers/api/v1/conversations_controller.rb:70:in map' /home/diaspora/diaspora/app/controllers/api/v1/conversations_controller.rb:70:in recipient_ids’
/home/diaspora/diaspora/app/controllers/api/v1/conversations_controller.rb:37:in create' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_controller/metal/basic_implicit_render.rb:6:in send_action’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/abstract_controller/base.rb:194:in process_action' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_controller/metal/rendering.rb:30:in process_action’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/abstract_controller/callbacks.rb:42:in block in process_action' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/activesupport-5.2.4.3/lib/active_support/callbacks.rb:132:in run_callbacks’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/abstract_controller/callbacks.rb:41:in process_action' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_controller/metal/rescue.rb:22:in process_action’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_controller/metal/instrumentation.rb:34:in block in process_action' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/activesupport-5.2.4.3/lib/active_support/notifications.rb:168:in block in instrument’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/activesupport-5.2.4.3/lib/active_support/notifications/instrumenter.rb:23:in instrument' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/activesupport-5.2.4.3/lib/active_support/notifications.rb:168:in instrument’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_controller/metal/instrumentation.rb:32:in process_action' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_controller/metal/params_wrapper.rb:256:in process_action’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/activerecord-5.2.4.3/lib/active_record/railties/controller_runtime.rb:24:in process_action' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/abstract_controller/base.rb:134:in process’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionview-5.2.4.3/lib/action_view/rendering.rb:32:in process' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_controller/metal.rb:191:in dispatch’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_controller/metal.rb:252:in dispatch' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/routing/route_set.rb:52:in dispatch’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/routing/route_set.rb:34:in serve' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/journey/router.rb:52:in block in serve’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/journey/router.rb:35:in each' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/journey/router.rb:35:in serve’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/routing/route_set.rb:840:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/omniauth-1.9.1/lib/omniauth/builder.rb:45:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-mobile-detect-0.4.0/lib/rack/mobile-detect.rb:164:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/http_accept_language-2.1.1/lib/http_accept_language/middleware.rb:14:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-oauth2-1.10.1/lib/rack/oauth2/server/resource.rb:20:in _call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-oauth2-1.10.1/lib/rack/oauth2/server/resource/bearer.rb:8:in _call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-oauth2-1.10.1/lib/rack/oauth2/server/abstract/handler.rb:17:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/versionist-2.0.1/lib/versionist/middleware.rb:39:in _call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/versionist-2.0.1/lib/versionist/middleware.rb:17:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/simple_captcha2-0.5.0/lib/simple_captcha/middleware.rb:47:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/warden-1.2.8/lib/warden/manager.rb:36:in block in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/warden-1.2.8/lib/warden/manager.rb:34:in catch’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/warden-1.2.8/lib/warden/manager.rb:34:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/tempfile_reaper.rb:15:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/etag.rb:25:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/conditional_get.rb:38:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/head.rb:12:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/http/content_security_policy.rb:18:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/session/abstract/id.rb:259:in context' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/session/abstract/id.rb:253:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/cookies.rb:670:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/activerecord-5.2.4.3/lib/active_record/migration.rb:559:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/callbacks.rb:28:in block in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/activesupport-5.2.4.3/lib/active_support/callbacks.rb:98:in run_callbacks’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/callbacks.rb:26:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/executor.rb:14:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/debug_exceptions.rb:61:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/show_exceptions.rb:33:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/railties-5.2.4.3/lib/rails/rack/logger.rb:38:in call_app' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/railties-5.2.4.3/lib/rails/rack/logger.rb:28:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/sprockets-rails-3.2.1/lib/sprockets/rails/quiet_assets.rb:13:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/remote_ip.rb:81:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/request_store-1.5.0/lib/request_store/middleware.rb:19:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/request_id.rb:27:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/method_override.rb:22:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/runtime.rb:22:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/activesupport-5.2.4.3/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/executor.rb:14:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/static.rb:127:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/sendfile.rb:111:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/turbo_dev_assets-0.0.2/lib/turbo_dev_assets.rb:32:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/secure_headers-6.3.0/lib/secure_headers/middleware.rb:11:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-cors-1.1.1/lib/rack/cors.rb:100:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/railties-5.2.4.3/lib/rails/engine.rb:524:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/railties-5.2.4.3/lib/rails/railtie.rb:190:in public_send' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/railties-5.2.4.3/lib/rails/railtie.rb:190:in method_missing’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/deflater.rb:34:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/tempfile_reaper.rb:15:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/lint.rb:49:in _call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/lint.rb:37:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/show_exceptions.rb:23:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/common_logger.rb:33:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/chunked.rb:54:in call' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/rack-2.0.9/lib/rack/content_length.rb:15:in call’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/unicorn-5.5.3/lib/unicorn/http_server.rb:605:in process_client' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/unicorn-worker-killer-0.4.4/lib/unicorn/worker_killer.rb:52:in process_client’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/unicorn-5.5.3/lib/unicorn/http_server.rb:700:in worker_loop' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/unicorn-5.5.3/lib/unicorn/http_server.rb:548:in spawn_missing_workers’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/unicorn-5.5.3/lib/unicorn/http_server.rb:144:in start' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/gems/unicorn-5.5.3/bin/unicorn:128:in <top (required)>’
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/bin/unicorn:23:in load' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/bin/unicorn:23:in
/home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/bin/ruby_executable_hooks:24:in eval' /home/diaspora/.rvm/gems/ruby-2.6.5@diaspora/bin/ruby_executable_hooks:24:in

I am wildly sorry, but I do not understand Ruby, so I cannot highlight something in the log output

It looks like the guid in the recipients list is incorrect. Where did you get it from?

Owww, I understand, the diaspora cannot find the user by guid. I am using the guid I get from the GET / api / v1 / user method

It needs to be the person guid, so for example the one you get from the contacts or people search resources.

User guid and contact guid are different entities?

I agree this is something that could’ve been abstracted away in the API, but apparently yes. FWIW sending a conversation to yourself doesn’t make a lot of sense and all people GUIDs outside the /user resource should be the right ones, so from normal API usage perspective you couldn’t even get at the “user guid” of a valid recipient.

Omg, I’m not that attentive, I hardcoded the wrong guid and tried to create a conversation. When I put the guid of the user that I described to you, the api worked as it should.

Great! Glad it works for you.

Thank you very much for your time

Of course, you’ are welcome :slight_smile:

1 Like