diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c
index afccf7ea55..9bde6d33f0 100644
--- a/src/mod/endpoints/mod_sofia/sofia_presence.c
+++ b/src/mod/endpoints/mod_sofia/sofia_presence.c
@@ -742,14 +742,21 @@ static int sofia_presence_sub_callback(void *pArg, int argc, char **argv, char *
stream.write_function(&stream, "\nsip:%s@%s\n", clean_from_user, clean_from_user, host);
stream.write_function(&stream, "\n", clean_to_user, host);
stream.write_function(&stream, "\n");
- } else if (!strcasecmp(proto, "park") | !strcasecmp(proto, "conf") | !strcasecmp(proto, "ext")) {
- stream.write_function(&stream, "\nsip:%s@%s;%s=%s\n",
- proto, proto, host, proto, !switch_strlen_zero(clean_to_user) ? clean_to_user : "unknown");
- stream.write_function(&stream, "\n", proto, host);
- stream.write_function(&stream, "\n\n\n",
- !strcasecmp(proto, "park") ? "no" : "yes");
- stream.write_function(&stream, "\nsip:%s@%s\n", proto, uuid, host);
- stream.write_function(&stream, "\n", proto, uuid, host, proto, uuid);
+ } else if (!strcasecmp(proto, "park")) {
+ stream.write_function(&stream, "\nsip:parking@%s;fifo=%s\n",
+ host, !switch_strlen_zero(clean_to_user) ? clean_to_user : "unknown");
+ stream.write_function(&stream, "\n", host);
+ stream.write_function(&stream, "\n\n\n");
+ stream.write_function(&stream, "\nsip:%s\n", uuid);
+ stream.write_function(&stream, "\n", uuid);
+ stream.write_function(&stream, "\n");
+ } else if (!strcasecmp(proto, "conf")) {
+ stream.write_function(&stream, "\nsip:conference@%s;conference=%s\n",
+ host, !switch_strlen_zero(clean_to_user) ? clean_to_user : "unknown");
+ stream.write_function(&stream, "\n", host);
+ stream.write_function(&stream, "\n\n\n");
+ stream.write_function(&stream, "\nsip:%s@%s\n", uuid, host);
+ stream.write_function(&stream, "\n", uuid, host);
stream.write_function(&stream, "\n");
}
}