Without looking at the logs, It will be difficult to give you a definitive answer, however, I think you need to have a full implementation of the call callbacks especially the ones which are used to setup media this one should be in the onCallMediaState()
r = self.getMedia(mi.index)
self.am = pj.AudioMedia.typecastFromMedia(r)
pj_ep = pj.Endpoint.instance()
aud_dev_mgr = pj_ep.audDevManager()
playback_dev_media = aud_dev_mgr.getPlaybackDevMedia()
capture_dev_media = aud_dev_mgr.getCaptureDevMedia()
self.am.startTransmit(playback_dev_media)
capture_dev_media.startTransmit(self.am)
If you had provided the logs I would have been easy to pinpoint the source of the Call decline message. regards,