private byte[] GetUMPromptPreview(PromptPreviewRpcRequest request, Guid dialPlanGuid)
        {
            UMPromptPreviewRpcTarget umpromptPreviewRpcTarget = (UMPromptPreviewRpcTarget)UMPromptPreviewRpcTargetPicker.Instance.PickNextServer(dialPlanGuid);

            if (umpromptPreviewRpcTarget == null)
            {
                throw new RpcUMServerNotFoundException();
            }
            byte[] audioData;
            try
            {
                ResponseBase responseBase = umpromptPreviewRpcTarget.ExecuteRequest(request) as ResponseBase;
                if (responseBase == null)
                {
                    throw new InvalidResponseException(umpromptPreviewRpcTarget.Name, string.Empty);
                }
                ErrorResponse errorResponse = responseBase as ErrorResponse;
                if (errorResponse != null)
                {
                    throw errorResponse.GetException();
                }
                PromptPreviewRpcResponse promptPreviewRpcResponse = responseBase as PromptPreviewRpcResponse;
                if (promptPreviewRpcResponse == null)
                {
                    throw new InvalidResponseException(umpromptPreviewRpcTarget.Name, string.Empty);
                }
                audioData = promptPreviewRpcResponse.AudioData;
            }
            catch (RpcException ex)
            {
                throw new InvalidResponseException(umpromptPreviewRpcTarget.Name, ex.Message, ex);
            }
            return(audioData);
        }
Exemplo n.º 2
0
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            PromptPreviewRpcRequest request = null;
            ObjectId identity = null;
            string   parameterSetName;

            switch (parameterSetName = base.ParameterSetName)
            {
            case "AACustomGreeting":
                request  = new UMAACustomPromptRpcRequest(base.AutoAttendant, this.PromptFileName);
                identity = base.AutoAttendant.Identity;
                goto IL_1ED;

            case "AfterHoursWelcomeGreeting":
                request  = UMAAWelcomePromptRpcRequest.AfterHoursWithCustomBusinessName(base.AutoAttendant, this.TestBusinessName);
                identity = base.AutoAttendant.Identity;
                goto IL_1ED;

            case "AfterHoursWelcomeGreetingAndMenu":
                request  = UMAAWelcomePromptRpcRequest.AfterHoursWithCustomKeyMapping(base.AutoAttendant, this.TestMenuKeyMapping);
                identity = base.AutoAttendant.Identity;
                goto IL_1ED;

            case "BusinessHours":
                request  = new UMAABusinessHoursPromptRpcRequest(base.AutoAttendant);
                identity = base.AutoAttendant.Identity;
                goto IL_1ED;

            case "BusinessLocation":
                request  = new UMAABusinessLocationPromptRpcRequest(base.AutoAttendant);
                identity = base.AutoAttendant.Identity;
                goto IL_1ED;

            case "BusinessHoursWelcomeGreeting":
                request  = UMAAWelcomePromptRpcRequest.BusinessHoursWithCustomBusinessName(base.AutoAttendant, this.TestBusinessName);
                identity = base.AutoAttendant.Identity;
                goto IL_1ED;

            case "BusinessHoursWelcomeGreetingAndMenu":
                request  = UMAAWelcomePromptRpcRequest.BusinessHoursWithCustomKeyMapping(base.AutoAttendant, this.TestMenuKeyMapping);
                identity = base.AutoAttendant.Identity;
                goto IL_1ED;

            case "DPCustomGreeting":
                request  = new UMDPCustomPromptRpcRequest(this.DataObject, this.PromptFileName);
                identity = this.DataObject.Identity;
                goto IL_1ED;
            }
            ExAssert.RetailAssert(false, "Invalid parameter set {0}", new object[]
            {
                base.ParameterSetName
            });
            try
            {
IL_1ED:
                ADObjectId adobjectId = (base.AutoAttendant == null) ? ((ADObjectId)this.DataObject.Identity) : base.AutoAttendant.UMDialPlan;
                UMPrompt umprompt = new UMPrompt(identity);
                umprompt.AudioData = this.GetUMPromptPreview(request, adobjectId.ObjectGuid);
                if (base.ParameterSetName == "DPCustomGreeting" || base.ParameterSetName == "AACustomGreeting")
                {
                    umprompt.Name = this.PromptFileName;
                }
                else
                {
                    umprompt.Name = base.ParameterSetName;
                }
                base.WriteObject(umprompt);
            }
            catch (LocalizedException exception)
            {
                base.WriteError(exception, ErrorCategory.NotSpecified, null);
            }
            TaskLogger.LogExit();
        }