Não é possível conectar ao servidor de comunicação do Office por meio da API de comunicação unificada

StackOverflow https://stackoverflow.com/questions/1941786

  •  20-09-2019
  •  | 
  •  

Pergunta

Estou tentando me conectar ao servidor de comunicação do Office usando a API gerenciada de comunicações unificadas. Eu tentei meu usuário e um novo usuário ativado para OCs. Ambas as contas podem fazer login com sucesso no cliente do Comunicador do Office, mas falhar usando a API. Ao criar a credencial da rede, se eu passar no nome de usuário no nome do domínio nome de usuário, recebo este erro:

SupportedAuthenticationProtocols=Ntlm, Kerberos
Realm=SIP Communications Service
FailureReason=InvalidCredentials
ErrorCode=-2146893044
Microsoft.Rtc.Signaling.AuthenticationException: The log on was denied. Check that the proper credentials are being used and the account is active. ---> Microsoft.Rtc.Internal.Sip.AuthException: NegotiateSecurityAssociation failed, error: - 2146893044

Se eu deixar de lado o domínio no nome de usuário, este erro:

ResponseCode=404 ResponseText=Not Found
DiagnosticInformation=ErrorCode=4005,Source=OCS.mydomain.com,Reason=Destination URI either not enabled for SIP or does not exist
Foi útil?

Solução

Acontece que isso foi uma supervisão da minha parte. Nosso domínio de anúncio e domínio do comunicador são diferentes, eu assumi que eles eram iguais.

A credencial da rede é o nome de usuário do domínio, e o endereço do SIP deveria ter sido sip: username@companyname.com, eu estava usando o sip: username@domain.com.

Outras dicas

Duas coisas a serem observadas:

  1. O nome de usuário não deve conter o domínio. Deve haver uma propriedade de domínio separada do NetworkCredential que você deve usar.
  2. Você também precisa passar o URI do usuário - por exemplo:

//Initialize and register the endpoint, using the credentials of the user the application will be acting as.
        UserEndpointSettings userEndpointSettings = new UserEndpointSettings(_userURI, _userServer);
        userEndpointSettings.Credential = _credential;
        _userEndpoint = new UserEndpoint(_collabPlatform, userEndpointSettings);
        _userEndpoint.BeginEstablish(EndEndpointEstablish, _userEndpoint);

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top