Je tente de configurer la communication SIP avec un server interne (en utilisant la bibliothèque PJSIP), cependant, ce server nécessite un champ d'en-tête personnalisé avec une valeur d'en-tête spécifiée pour l'appel REGISTRATION
. Par exemple, nous allons appeler cet en-tête obligatoire MyHeader
.
D'après ce que j'ai trouvé, la fonction pjsua_acc_add()
appenda un count et l'savea sur le server en utilisant une structure de configuration.
Le paramètre reg_hdr_list
de la structure config a la description:
Les en-têtes SIP personnalisés facultatifs à mettre dans la request d'logging.
- AFNetworking 2.0 Demande w. En-tête personnalisé
- Génération d'ipa à partir de la command line xcode
- En Objective-C, l'import des mêmes en-têtes dans chaque class rend la compilation plus longue?
- Position de l'en-tête UICollectionView en mode de défilement horizontal avec disposition de stream
- Comment faire des generics dans une contrainte de type collection?
Ce qui ressemble exactement à ce dont j'ai besoin, mais ne semble pas avoir d'effet sur l'appel lui-même.
Voici ce que j'ai jusqu'ici:
pjsua_acc_config cfg; pjsua_acc_config_default(&cfg); //...Some other config stuff related to the server... pjsip_hdr test; test.name = pj_str("MyHeader"); test.sname = pj_str("MyHdr"); test.type = PJSIP_H_OTHER; test.prev = cfg.reg_hdr_list.prev; test.next = cfg.reg_hdr_list.next; cfg.reg_hdr_list = test; pj_status_t status; status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
Du côté server, il n'y a aucun champ d'en-tête supplémentaire ou quoi que ce soit. Et la structure qui est utilisée pour définir l'en-tête ( pjsua_hdr
) n'a pas de value
ou de champ équivalent, donc même si elle a créé l'en-tête, comment définit-elle la valeur?
Voici la réfrence pour la définition de la list d'en-tête et la reference pour la structure d'en-tête.
Edit: J'ai trouvé la solution grâce à un collègue:
struct pjsip_generic_ssortingng_hdr CustomHeader; pj_str_t name = pj_str("MyHeader"); pj_str_t value = pj_str("HeaderValue"); pjsip_generic_ssortingng_hdr_init2(&CustomHeader, &name, &value); pj_list_push_back(&cfg.reg_hdr_list, &CustomHeader);
Cela semble fonctionner comme prévu.
Il suffit de citer l'OP lorsqu'il a trouvé la solution , mais il a oublié de l'append comme réponse:
Edit: J'ai trouvé la solution grâce à un collègue:
struct pjsip_generic_ssortingng_hdr CustomHeader; pj_str_t name = pj_str("MyHeader"); pj_str_t value = pj_str("HeaderValue"); pjsip_generic_ssortingng_hdr_init2(&CustomHeader, &name, &value); pj_list_push_back(&cfg.reg_hdr_list, &CustomHeader);
Cela semble fonctionner comme prévu.