Invitar a los diputados
Product deprecation notice
Effective April 30th, 2026, Vonage In-App Messaging will no longer be available. Access for new users will be closed, and the service will be discontinued for all existing users.
If you have any questions regarding this product’s discontinuation, please contact your account manager or our support team.
Visión general
Esta guía trata sobre cómo invitar a usuarios a una conversación (miembros), escuchar invitaciones para unirse a una conversación, así como la incorporación de nuevos miembros.
Antes de empezar, asegúrese de que ha añadido el SDK a su aplicación y eres capaz de crear una conversación.
NOTA: Hay disponible un tutorial paso a paso para crear una aplicación de chat aquí.
Esta guía le introducirá en los siguientes conceptos.
- Invita - puedes invitar a usuarios a una conversación
- Applications -
member:invitedeventos que se disparan en una Aplicación, antes de ser Miembro de una Conversación - Eventos de conversación -
member:joinedytexteventos que se disparan en una Conversación, después de ser Miembro
Escuchar las invitaciones a la conversación y aceptarlas
Se consigue añadiendo un oyente en la etiqueta application para el objeto member:invited evento:
app.on("member:invited", (member, event) => {
//identify the sender and type of conversation.
if (event.body.cname.indexOf("CALL") != 0 && member.invited_by) {
console.log("*** Invitation received:", event);
//accept an invitation.
app.getConversation(event.cid || event.body.cname)
.then((conversation) => {
conversation
.join()
.then(() => {
...
})
.catch(this.errorLogger)
})
.catch(this.errorLogger)
}
})
private val memberEventListener = object : NexmoMemberEventListener {
override fun onMemberInvited(event: NexmoMemberEvent, member: NexmoMemberSummary) {
Log.d("TAG", "Member ${event.embeddedInfo.user.name} invited to the conversation");
// Join user to the conversation (accept the invitation)
conversation?.join(event.embeddedInfo.user.name, joinConversationListener)
}
override fun onMemberAdded(event: NexmoMemberEvent, member: NexmoMemberSummary) {}
override fun onMemberRemoved(event: NexmoMemberEvent, member: NexmoMemberSummary) {}
}
private val joinConversationListener = object: NexmoRequestListener<String>{
override fun onSuccess(memberId: String?) {
Log.d("TAG", "Member joined the conversation $memberId")
}
override fun onError(apiError: NexmoApiError) {
Log.d("TAG", "Error: Unable to join member to the conversation $apiError")
}
}
conversation?.addMemberEventListener(memberEventListener)
NexmoMemberEventListener memberEventListener = new NexmoMemberEventListener() {
@Override
public void onMemberInvited(@NonNull @NotNull NexmoMemberEvent event, @NonNull @NotNull NexmoMemberSummary member) {
Log.d("TAG", "Member " + event.embeddedInfo().getUser().getName() + " invited to the conversation");
// Join user to the conversation (accept the invitation)
conversation.join(event.embeddedInfo().getUser().getName(), joinConversationListener);
}
@Override
public void onMemberAdded(@NonNull @NotNull NexmoMemberEvent event, @NonNull @NotNull NexmoMemberSummary member) {}
@Override
public void onMemberRemoved(@NonNull @NotNull NexmoMemberEvent event, @NonNull @NotNull NexmoMemberSummary member) {}
};
NexmoRequestListener<String> joinConversationListener = new NexmoRequestListener<String>() {
@Override
public void onSuccess(@Nullable String memberId) {
Log.d("TAG", "Member joined the conversation " + memberId);
}
@Override
public void onError(@NonNull NexmoApiError apiError) {
Log.d("TAG", "Error: Unable to join member to the conversation " + apiError);
}
};
conversation.addMemberEventListener(memberEventListener);
Añadir NXMClientDelegate como extensión de un ViewController o similar, y aplicar client(_ client: NXMClient, didReceive conversation: NXMConversation):
Nota: Los 2 primeros métodos son necesarios cuando se aplica NXMClientDelegate:
extension ViewController: NXMClientDelegate {
func client(_ client: NXMClient, didChange status: NXMConnectionStatus, reason: NXMConnectionStatusReason) {
...
}
func client(_ client: NXMClient, didReceiveError error: Error) {
print("✆ ‼️ connection error: \(error.localizedDescription)")
...
}
func client(_ client: NXMClient, didReceive conversation: NXMConversation) {
conversation.join { (error, member) in
if let error = error {
NSLog("Error joining conversation: \(error.localizedDescription)")
return
}
NSLog("Conversation joined.")
}
}
}
Tener un ViewControllero similar, se ajustan a NXMClientDelegate y aplicar client:didReceiveConversation::
Nota: Los 2 primeros métodos son necesarios cuando se aplica NXMClientDelegate:
- (void)client:(nonnull NXMClient *)client didChangeConnectionStatus:(NXMConnectionStatus)status reason:(NXMConnectionStatusReason)reason {
...
}
- (void)client:(nonnull NXMClient *)client didReceiveError:(nonnull NSError *)error {
NSLog(@"✆ ‼️ connection error: %@", [error localizedDescription]);
...
}
- (void)client:(NXMClient *)client didReceiveConversation:(NXMConversation *)conversation {
[conversation join:^(NSError * _Nullable error, NXMMember * _Nullable member) {
if (error) {
NSLog(@"Error joining conversation: %@", error.localizedDescription);
return;
}
NSLog(@"Conversation joined.");
}];
}
Escuchar a los miembros que se unieron a una conversación
Escucha el member:joined en la conversación:
conversation.on("member:joined", (member, event) => {
const date = new Date(Date.parse(event.timestamp))
console.log(`*** ${member.user.name} joined the conversation`)
...
})
private val memberEventListener = object : NexmoMemberEventListener {
override fun onMemberInvited(memberEvent: NexmoMemberEvent) {}
override fun onMemberAdded(memberEvent: NexmoMemberEvent) {
Log.d("TAG", "Member ${memberEvent.embeddedInfo.user.name} added to the conversation")
}
override fun onMemberRemoved(memberEvent: NexmoMemberEvent) {}
}
conversation?.addMemberEventListener(memberEventListener)
NexmoMemberEventListener memberEventListener = new NexmoMemberEventListener() {
@Override
public void onMemberInvited(@NonNull NexmoMemberEvent memberEvent) {}
@Override
public void onMemberAdded(@NonNull NexmoMemberEvent memberEvent) {
Log.d("TAG", "Member " + memberEvent.getEmbeddedInfo().getUser().getName() + " added the conversation");
}
@Override
public void onMemberRemoved(@NonNull NexmoMemberEvent memberEvent) {}
};
conversation.addMemberEventListener(memberEventListener);
Añadir NXMConversationDelegate como extensión de un ViewController o similar, y aplicar conversation(_ conversation: NXMConversation, didReceive event: NXMMemberEvent):
Nota: El primer método siguiente es necesario cuando se aplica NXMConversationDelegate:
extension ViewController: NXMConversationDelegate {
func conversation(_ conversation: NXMConversation, didReceive error: Error) {
NSLog("Conversation error: \(error.localizedDescription)")
}
func conversation(_ conversation: NXMConversation, didReceive event: NXMMemberEvent) {
if event.state == .joined {
NSLog("\(event.embeddedInfo?.user.name) joined.")
}
}
}
Tener un ViewControllero similar, se ajustan a NXMConversationDelegate y aplicar conversation:didReceiveImageEvent::
Nota: El primer método siguiente es necesario cuando se aplica NXMConversationDelegate:
- (void)conversation:(NXMConversation *)conversation didReceive:(NSError *)error {
NSLog(@"Conversation error: %@", error.localizedDescription);
}
- (void)conversation:(NXMConversation *)conversation didReceiveMemberEvent:(NXMMemberEvent *)event {
if (event.state == NXMMemberStateJoined) {
NSLog(@"%@ joined", event.embeddedInfo.user.name);
}
}
Invitar a los usuarios a una conversación
Los usuarios pueden ser invitados a unirse a la conversación - se utilizará su nombre de usuario:
conversation.invite({ user_name: "Jane" }).then((member) => {
console.log(member.state + " user: " + member.user.id + " " + member.user.name);
}).catch((error) => {
console.log(error);
});
conversation.invite(userName, object: NexmoRequestListener<String>{
override fun onSuccess(result: String?) {
Log.d("TAG", "User invited $result")
}
override fun onError(apiError: NexmoApiError) {
Log.d("TAG", "Error: Unable to invite user ${apiError.message}")
}
})
conversation.invite(userName, new NexmoRequestListener<String>() {
@Override
public void onSuccess(@Nullable String result) {
Log.d("TAG", "User invited " + result);
}
@Override
public void onError(@NonNull NexmoApiError apiError) {
Log.d("TAG", "Error: Unable to invite user " + apiError.getMessage());
}
});
conversation.inviteMember(withUsername: "Jane", completion: { (error) in
if let error = error {
NSLog("Error inviting user: \(error.localizedDescription)")
return
}
NSLog("User invited")
})
[conversation inviteMemberWithUsername:@"Jane" completion:^(NSError * _Nullable error) {
if (error) {
NSLog(@"Error inviting user: %@", error);
return;
}
NSLog(@"User invited");
}];