VoiceXML and CCXML

Содержание

Слайд 2

VOICE PORTAL ATTRIBUTES

Runs on industry standard hardware
Intel x86
Runs on industry standard operating

VOICE PORTAL ATTRIBUTES Runs on industry standard hardware Intel x86 Runs on
system
Red Hat ES6.0
Uses industry standard protocols to communicate with external systems
HTTPS
MRCP
SIP

Слайд 3

VOICE PORTAL OFFERS

Bundled solution includes:
Hardware
Linux
Note – The Linux provided by Avaya is

VOICE PORTAL OFFERS Bundled solution includes: Hardware Linux Note – The Linux
a (small) subset of Red Hat ES6 Update 3.
Voice Portal
Dialog Designer
Software-only solution includes:
Voice Portal
Dialog Designer

Слайд 4

VOICE PORTAL СОВМЕСТИМОСТЬ

PBX
Communication Manager (CM) 2.1+
SIP gateway
Avaya Session Management (SM) 6.0+
Web application

VOICE PORTAL СОВМЕСТИМОСТЬ PBX Communication Manager (CM) 2.1+ SIP gateway Avaya Session
server
Dialog Designer applications require Apache Tomcat, BEA WebLogic, IBM WebSphere, or IBM WebSphere Express
Non-Dialog Designer applications can run on any application server

Слайд 5

VOICE PORTAL СОВМЕСТИМОСТЬ

Speech servers
IBM WebSphere Voice Server 5.1.3+ (ASR+TTS)
Nuance RealSpeak 4.0.12+ (TTS)
Nuance

VOICE PORTAL СОВМЕСТИМОСТЬ Speech servers IBM WebSphere Voice Server 5.1.3+ (ASR+TTS) Nuance
Recognizer 9.0+ (ASR)
Nuance OpenSpeech Recognizer 3.0.13+ (ASR)

Слайд 6

VP ОБЩАЯ СХЕМА

VP ОБЩАЯ СХЕМА

Слайд 7

SIMPLIFIED CALL FLOW

Caller dials a phone number that routes through PSTN to

SIMPLIFIED CALL FLOW Caller dials a phone number that routes through PSTN
CM.
CM routes call to Voice Portal.
Based on number dialed by caller, Voice Portal accesses appropriate application URL on web server.
Web server launches speech application, which is typically written in a high level programming language such as Java.

Слайд 8

SIMPLIFIED CALL FLOW (CONT.)

Speech application running on web server generates VoiceXML that

SIMPLIFIED CALL FLOW (CONT.) Speech application running on web server generates VoiceXML
gets returned to Voice Portal.
VoiceXML gets processed by Voice Portal, which causes Voice Portal to interact with caller.
When VoiceXML requests ASR or TTS, Voice Portal contacts appropriate speech server.
When caller hangs up, application is terminated.

Слайд 9

VOICE PORTAL COMPONENTS

Voice Portal Management System (VPMS)
Provides web interface for configuring system.
Houses

VOICE PORTAL COMPONENTS Voice Portal Management System (VPMS) Provides web interface for
Voice Portal database that stores all configuration data.
Distributes telephony ports among MPPs.
Provides outcall web service.
Media Processing Platform (MPP)
Talks to PBX to initiate/answer calls.
Contains CCXML and VoiceXML interpreters that process applications.
Talks to speech servers to provide ASR/TTS support.

Слайд 10

VOICE PORTAL CONFIGURATIONS

Single-box
VPMS and MPP run on one server.
Note – If single

VOICE PORTAL CONFIGURATIONS Single-box VPMS and MPP run on one server. Note
server goes down, entire system is out of service.
Multi-box
Single VPMS on a dedicated server.
Up to 20 MPPs on separate servers.
Note – If single server goes down, surviving servers are still able to process calls.

Слайд 11

АРХИТЕКТУРА VOICE PORTAL

Important – In order to ensure adequate network performance, VPMS,

АРХИТЕКТУРА VOICE PORTAL Important – In order to ensure adequate network performance,
MPPs, gateways, and speech servers should all be physically co-located.

Слайд 12

VPMS ARCHITECTURE

Note – Virtually all VPMS components go through PostgreSQL Server to

VPMS ARCHITECTURE Note – Virtually all VPMS components go through PostgreSQL Server
access Voice Portal Database. The lines were omitted to enhance readability.

Слайд 13

VPMS COMPONENTS

VPMS Application
Web user interface
Browser interface administrator uses to manage Voice Portal

VPMS COMPONENTS VPMS Application Web user interface Browser interface administrator uses to
system.
Allows administrator to configure system, start/stop system and get status, and generate reports.
MPP manager
Controls MPPs.
Sends configuration parameters and commands entered by administrator through web user interface to MPPs.
Monitors status of MPPs and redistributes telephony resources as necessary.

Слайд 14

VPMS COMPONENTS (CONT.)

VPMS Application (cont.)
Report data collector
Collects call detail and session detail

VPMS COMPONENTS (CONT.) VPMS Application (cont.) Report data collector Collects call detail
report data from MPPs.
WebLM client
Collects license information from license server.
SNMP agent
Interface that allows administrator to query Voice Portal status using third party Simple Network Management Protocol (SNMP) manager.

Слайд 15

VPMS COMPONENTS (CONT.)

Web services
Logging web service
Logs events that are displayed using VPMS

VPMS COMPONENTS (CONT.) Web services Logging web service Logs events that are
Log Viewer.
Alarming web service
Logs events that are displayed using VPMS Alarm Manager.
Generates SNMP notifications.
Application Logging web service
Logs events that are displayed using VPMS report Application Detail.
Application Interface web service
Initiates an outcall and/or launches a speech application.

Слайд 16

VPMS COMPONENTS (CONT.)

WebLM server
License server
Voice Portal database
Contains Voice Portal configuration information.
Contains log/report

VPMS COMPONENTS (CONT.) WebLM server License server Voice Portal database Contains Voice
data.
Important – This is the thing that you need to back-up!

Слайд 17

MPP – FEATURES

Runs on Linux (RH ES 6 Update 2 or greater)
100%

MPP – FEATURES Runs on Linux (RH ES 6 Update 2 or
software implementation
VoiceXML 2.1 and CCXML 1.0 applications
MRCP 1/2 (ASR/TTS)
Telephony – H.323 & SIP
No local administration or configuration
No persistent data (no need for MPP backups)
Automatic restart of crashed/hung processes
Logging – process, call/session, application, & performance

Слайд 18

MPP ARCHITECTURE – PROCESS VIEW

MPP ARCHITECTURE – PROCESS VIEW

Слайд 19

MPP –TELEPHONY
H323
SIP

MPP –TELEPHONY H323 SIP

Слайд 21

MPP – TELEPHONY – URI TYPES

Used by VP during:
Inbound Call:
Incoming Call’s Originating

MPP – TELEPHONY – URI TYPES Used by VP during: Inbound Call:
& Destination/Called number
Outbound Call:
VXML tag
Argument in the Outcall Web Service
3 types
tel:
sip:
sips:

Слайд 22

MPP – TELEPHONY – URI TYPES: ‘TEL:’

What you are used to using

MPP – TELEPHONY – URI TYPES: ‘TEL:’ What you are used to
from VP 3.0
H323 & SIP
Supported chars: 0123456789*#
Supported PostDial Digits: ,pP plus 0123456789*#ABCD
Example:

Слайд 23

MPP – TELEPHONY – URI TYPES: ‘SIP:’ & ‘SIPS:’

sip:
SIP Only
URI Format

MPP – TELEPHONY – URI TYPES: ‘SIP:’ & ‘SIPS:’ sip: SIP Only
(See RFC3261 (See RFC3261 (Section 19.1.1 ), RFC2396 (See RFC3261 (Section 19.1.1 ), RFC2396, http://www.iana.org/assignments/sip-parameters for more detail):
sip:user:password@host:port;uri-parameters?headers
Examples:



sips:
SIP Only
sips: is Secure SIP.
Uses same URI format as sip:
Be sure to configure your CM, SES, and VPMS to use TLS.
Warning! Call will fail if it can’t use secure, encrypted transport (TLS).
Example:

Слайд 24

MIXING H.323 & SIP – OUTBOUND PORT SELECTION

Dependent on the URI type
tel:
H.323

MIXING H.323 & SIP – OUTBOUND PORT SELECTION Dependent on the URI
outbound port available? If no, go to step 2.
SIP outbound channel available? If no, go to step 3. If yes, convert tel: URI to a sip:
For example,
tel:8037332555 becomes sip:[email protected]
where avaya.com is the Route Domain configured in the VPMS’s SIP Connection.
Call fails with a NO RESOURCE (error.connection.noresource thrown in VXML).
sip:
SIP outbound (TCP or TLS) channel available. If no, go to step 2.
Call fails with a NO RESOURCE (error.connection.noresource thrown in VXML).
sips:
SIP outbound (TLS) channel available. If no, go to step 2.
Call fails with a NO RESOURCE (error.connection.noresource thrown in VXML).
Bridged Transfers adds a twist
Outbound port available from the same port group/trunk used by the incoming call?
If no, go to step 2.
Use algorithm defined in previous bullet to find a port/channel.

Слайд 25

MPP – TELEPHONY – SIP HEADERS & UUI

SIP Headers
“Name: Value” data included

MPP – TELEPHONY – SIP HEADERS & UUI SIP Headers “Name: Value”
in the SIP Requests/Responses
CCXML & VXML apps can get and set headers (more on this later)
VP provides access to limited SIP Headers:
Call-ID, Contact, From, To, History-Info, P-asserted Identity, Require,
Supported, User-to-User, User-Agent, Via, User-To-User Information (UUI),
& Unknown
UUI (User-to-User Information)
VoiceXML & CCXML call it AAI (Application-to-Application Information)
Is a SIP Header
Inbound: both CM (User-to-User) and AudioCodes (X-UserToUser) format are checked
Outbound: UUI passed in the SIP Header, User-to-User or app can send customized name using Unknown header
Example: Passing collected data (account number) in Call Center applications

Слайд 26

MPP – TELEPHONY - SIP HEADERS & UUI


MPP – TELEPHONY - SIP HEADERS & UUI Transfer name="mycall" dest="tel:92312782" aai=“Put
xmlns="http://www.w3.org/2001/vxml">



Transfer

name="mycall"
dest="tel:92312782"
aai=“Put your UUI here"
type="bridge"
transferaudio="mohal.wav"
connecttimeout="10s">



INVITE sip:[email protected];user=phone SIP/2.0
From: ;tag=669bbe9c356dc1200094877585
To:
Call-ID: a29bbe9c356dc1300094877585
CSeq: 1 INVITE
Max-Forwards: 70
Route:
Via: SIP/2.0/TCP 135.148.133.117;branch=z9hG4bKaa2be9c356dc1400094877585
User-Agent: AVP UA 4.0
Supported: 100rel, timer, histinfo
Allow: INVITE, CANCEL, BYE, ACK, PRACK, NOTIFY, OPTIONS
Contact:
Session-Expires: 1200;refresher=uac
Min-SE: 180
Content-Type: application/sdp
User-to-User:Put your UUI here
Content-Length: 159
v=0
o=- 1 1 IN IP4 135.148.133.117
s=-
c=IN IP4 135.148.133.117
t=0 0
m=audio 30006 RTP/AVP 0 96
a=rtpmap:0 PCMU/8000
a=rtpmap:96 telephone-event/8000

VXML page for Bridge Transfer

SIP INVITE sent from the MPP

Слайд 27

MPP – TELEPHONY – QUALITY OF SERVICE (QOS)

Setting Prioritization
Supported in VP for

MPP – TELEPHONY – QUALITY OF SERVICE (QOS) Setting Prioritization Supported in
both SIP & H.323
Used by intervening routers to prioritize packet throughput
Supported on layers 2 and 3 of the RTP stack
Configurable from VPMS on System Configuration > MPP Servers > VoIP Settings > QoS Parameters
To work all equipment along the RTP path must support QOS
Monitoring
Set RTCP Monitor Settings on VPMS
MPP’s Telephony provider sends statistics during active session

Слайд 28

MPP – ASR & TTS

MPP uses MRCP (v.1 draft 4) to talk

MPP – ASR & TTS MPP uses MRCP (v.1 draft 4) to
to Speech Servers
Supported Speech Servers: IBM WVS, Nuance, Nuance Quantum
For multilingual applications, we recommend the Speech Servers in your Voice Portal configuration be installed with all languages needed by the application

Слайд 29

MPP – ASR & TTS - SPEECH SERVER COMPARISON

MPP – ASR & TTS - SPEECH SERVER COMPARISON

Слайд 30

MPP – ASR & TTS – RESOURCE ALLOCATION

On the VPMS each ASR/TTS

MPP – ASR & TTS – RESOURCE ALLOCATION On the VPMS each
server is configured with Total Number of Licensed ASR/TTS Resources
For Each ASR/TTS Server MPP dynamically allocates ports based on
ASR/TTS Server’s Total Number of Licensed ASR/TTS Resources
Total telephony ports/channels for VP System
Number of telephony ports/channels for the MPP
MPP automatically adjusts allocation when ASR/TTS Server configuration or Telephony Ports/Channel count changes.
If increase in speech ports, takes effect immediately
If decrease in speech ports, may be delayed if ports are in use

Слайд 31

MPP – ASR & TTS – RESOURCE LOAD BALANCING

Load Balancing is not

MPP – ASR & TTS – RESOURCE LOAD BALANCING Load Balancing is
across all MPPs in a VP system.
It is local to an MPP.
Speech Servers can have different license capacities
The MPP determines which ASR/TTS server to use by looking at:
Speech Server state (up/down)
Language(s) required by the application
Speech Server status (errors, & latencies)
Speech Server with the least in-use ports (on that MPP)

Слайд 32

MPP – ASR & TTS – RESOURCE MULTIPLEXING

Multiplexing saves you $$$, through

MPP – ASR & TTS – RESOURCE MULTIPLEXING Multiplexing saves you $$$,
purchasing fewer Speech Server ports.
TTS Resources are multiplexed
The same TTS resource can be used by multiple simultaneous calls.
A TTS resource is allocated to a call when a TTS prompt is queued and returned to a free pool when the play is complete (the resource hasn’t been released). This allows for another call, requiring the same resource, to utilize the already established connection.
If your application uses minimal TTS (more prerecorded prompts), then you could potentially purchase fewer TTS licenses.
ASR Resources are not multiplexed. No $$$ saved here…
Total # ASR licenses = Total # Telephony ports across the VP System
An ASR port is allocated at the start of a session and released at the end of a session.

Слайд 33

MPP – ASR & TTS – MONITORING

Use MPP Service Menu or listss.php

MPP – ASR & TTS – MONITORING Use MPP Service Menu or
on MPP to view the status for the Speech Servers and their allocated resources

Ports dynamically assigned to MPP

Error Count since last start.

Ports in Use

Enabled on MPP?

Latencies since last start

Слайд 34

MPP – APPLICATIONS

MPP supports running two types of custom application types:
VoiceXML
“…is a

MPP – APPLICATIONS MPP supports running two types of custom application types:
markup language for creating voice-user interfaces. It uses speech recognition and/or touchtone (DTMF keypad) for input, and pre-recorded audio and text-to-speech synthesis (TTS) for output.”
CCXML
“…is an XML-based language designed to provide telephony call control support for VoiceXML and other dialogue systems. CCXML can control the setup, monitoring and tear-down of phone calls.”

Слайд 35

MPP – APPLICATIONS

Even if only a VoiceXML application is configured, VP always

MPP – APPLICATIONS Even if only a VoiceXML application is configured, VP
runs CCXML (MPP uses its default.ccxml page).
VPMS’s Application page offers application URI combos…
VoiceXML (only option in VP 3.0)
MPP’s default.ccxml page is used for call control
CCXML
CCXML does not require starting a VoiceXML page
e.g. A CCXML app can just playing a prompt & disconnect
CCXML page can load a VoiceXML page
VoiceXML & CCXML
CCXML page can load a VoiceXML page
CCXML page can use session parameter to get the VoiceXML URI configured on the VPMS

Слайд 36

MPP – APPLICATIONS – CCXML? WHY DO I CARE?

Replace CTI functionality
Advanced Call

MPP – APPLICATIONS – CCXML? WHY DO I CARE? Replace CTI functionality
Control – Joining a single call to multiple VXML dialogs
Future – Handling conference calling and
Example – Find me/Follow Me
Asynchronous eventing
Interrupt a running CCXML page.
Example: Caller waiting in queue for a Call Center Agent
Outcall Web Services support
Advanced handling of call failures. Also, CCXML application can log failures to DB.
Future: CCXML could react differently if outbound call connected to fax machine or answering machine vs. person.
One LaunchCCXML could spawn multiple calls
Example: Call Blast
Future – Data passed in-band data during call (not just at call creation)

Слайд 37

MPP – APPLICATIONS – CCXML & VOICEXML FEATURES

MPP – APPLICATIONS – CCXML & VOICEXML FEATURES

Слайд 38

MPP – APPLICATIONS – MISC

DD 6.0 supports creating CCXML &/or VoiceXML applications
If

MPP – APPLICATIONS – MISC DD 6.0 supports creating CCXML &/or VoiceXML
you are creating CCXML & VoiceXML applications, be careful. The syntax can be different between the two.
CCXML not 100% compliant
Supported:
, , , , , , &
Not Supported:
, , &

Слайд 39

MPP START UP

Linux Boots
Linux inittab starts mppmon
Linux Init starts httpd daemon
Linux

MPP START UP Linux Boots Linux inittab starts mppmon Linux Init starts
Init starts mpp daemon (mppsysmgr)
mppsysmgr starts EventMgr process & waits for incoming requests from VPMS
mppsysmgr sets state & config to Stopped & No configuration
VPMS sends configuration
Apache invokes MmsServer which forwards the configuration to mppsysmgr
mppsysmgr downloads Event Handlers & Certificates from VPMS
mppsysmgr sets state & config to Stopped & Telephony configuration needed
VPMS sends start (administrator presses the Start button)
Apache invokes MmsServer which forwards the start to mppsysmgr
mppsysmgr starts vxmlmgr, ccxml, and SessionManager
mppsysmgr changes state & config to Running & Telephony configuration needed
VPMS sends Port Configuration
Apache invokes MmsServer which forwards the port list to mppsysmgr
mppsysmgr sends port information to SessionManager
H.323 Ports: SessionManager registers the extensions with Gatekeeper
SIP Channels: SessionManager listens for incoming calls or waits for outbound call request
mppsysmgr changes state & config to Running & Configuration OK
MPP ready to receive calls
*Note: For simplicity, steps showing the VPMS sending a heartbeat request to the MPP have been skipped.

Слайд 40

MPP TAKING A CALL



VoiceXML Say Hello

MPP TAKING A CALL VoiceXML Say Hello Sample --> --> Say Hello
Sample
-->






hello










Simple VoiceXML “Hello World” application

Слайд 41

MPP TAKING A CALL – H.323

MPP TAKING A CALL – H.323

Слайд 42

MPP TAKING A CALL – SIP

MPP TAKING A CALL – SIP

Слайд 43

MPP – STATUS & DEBUG

Records & Transcriptions
Eventing & Tracing
MPP Utilities

MPP – STATUS & DEBUG Records & Transcriptions Eventing & Tracing MPP Utilities

Слайд 44

MPP –RECORDS

Voice Portal provides detail Call Records so that you may…
Generate call

MPP –RECORDS Voice Portal provides detail Call Records so that you may…
load reports
Debug call quality problems
Debug application problems
& more!
The MPP records 4 different Call Records types
Session Detail Records (SDR)
Call Detail Records (CDR)
Application Detail Records (ADR)
Transcriptions & Utterances
VPMS provides various Reports to view Records
Record files are purged from MPP based on VPMS configuration

Слайд 45

MPP – STATUS & DEBUG– EVENTS & ALARMS

Events
ID format: P_
All severity levels

MPP – STATUS & DEBUG– EVENTS & ALARMS Events ID format: P
written to the local MPP process logs.
Events are sent to the VPMS - configurable by severity level:
Fatal, Error (default), Warning, & Info
Viewable in VPMS Log Viewer
Some Events are aggregated before sent to VPMS
Debug Tip: Some MPP Events seen in Log Viewer report the Session ID. Use this Session ID when searching the MPP process logs.
Alarms
Some Events trigger VPMS alarms.
ID format: Same as Event ID except starts with Q instead of P.
Viewable in VPMS Alarm Manager

Слайд 46

MPP – STATUS & DEBUG - TRACING

Intended for use for debugging problems.

MPP – STATUS & DEBUG - TRACING Intended for use for debugging

VPMS Configuration:
By level: Off (default), Fine, Finer, & Finest
By Subsystem: Telephony, System Manager, TTS…
Only written to the local MPP process logs
Debug Tips:
The logs aren’t too helpful unless tracing is enabled
The logs with lots of tracing are difficult to dissect
Enabling tracing to Finest can cause performance degradation and is not generally recommended on production servers
Don’t set Telephony to Finest unless Avaya Support tells you!

Слайд 47

MPP – STATUS & DEBUG – UTILITIES

MPP Service Menu
web access for checking

MPP – STATUS & DEBUG – UTILITIES MPP Service Menu web access
the MPP
Written in html/php
can be accessed by selecting the MPP from the VPMS’s System Monitor page and then clicking on the Service Menu link
SSH/terminal window
Use the MPP’s scripts such as and to view status for processes and stations. See the Voice Portal’s Troubleshooting guide for a complete description of the available scripts.
Use basic linux commands such as ps -e and top for a list of system processes and system performance

Слайд 48

MPP – STATUS & DEBUG - SERVICE MENU

Uses the same login credentials

MPP – STATUS & DEBUG - SERVICE MENU Uses the same login
as VPMS.
MPP service menu is not accessible if using tools such as: connect2, etc.
Used to:
Resource status
View Configuration
View & Clear process logs
Run diagnostics & collect logs

Слайд 49

MPP – STATUS & DEBUG – SCRIPTS

If you cannot run the Service

MPP – STATUS & DEBUG – SCRIPTS If you cannot run the
Menu, or just prefer the command line, almost all of the Service Menu functionality is available through the MPP’s scripts.

Слайд 50

QUESTIONS

QUESTIONS

Слайд 51

FAILOVER AND DISASTER RECOVERY

Failover
What happens when some component of the Voice Portal

FAILOVER AND DISASTER RECOVERY Failover What happens when some component of the
system fails.
Generally handled automatically by the system.
Disaster Recovery
What happens when the entire Voice Portal system fails.
Generally handled manually.

Слайд 52

FAILOVER IN VOICE PORTAL

If the VPMS fails…
All calls in progress on various

FAILOVER IN VOICE PORTAL If the VPMS fails… All calls in progress
MPPs continue.
All MPPs continue to take new calls.
Log/alarm data generated by MPPs is lost.
No access to VPMS web user interface.
No SNMP notifications generated.
No response to SNMP queries.
No outcalls made by Application Interface web service.

Слайд 53

FAILOVER IN VOICE PORTAL (CONT.)

If an MPP fails…
All calls in progress on

FAILOVER IN VOICE PORTAL (CONT.) If an MPP fails… All calls in
that MPP are lost.
Other MPPs are unaffected.
VPMS will redistribute telephony resources from dead MPP among the surviving MPPs.
Important – When you configure your MPPs in the VPMS, you must set the value of the field Maximum Simultaneous Calls appropriately in order for telephony resource redistribution to work properly.

Слайд 54

FAILOVER IN VOICE PORTAL (CONT.)

If a speech server fails…
Calls in progress that

FAILOVER IN VOICE PORTAL (CONT.) If a speech server fails… Calls in
are using failed speech server for ASR will fail.
Calls in progress that are using failed speech server for TTS will automatically switch to a different speech server.
All MPPs will avoid using failed speech server for new calls.
If an application server fails…
All calls in progress that use applications on that application server will fail.
All new calls that use applications on that application server will fail.

Слайд 55

FAILOVER IN VOICE PORTAL (CONT.)

If a gateway fails…
All calls in progress on

FAILOVER IN VOICE PORTAL (CONT.) If a gateway fails… All calls in
that gateway will fail.
If an alternate gateway is configured, effected MPPs will re-register H.323 stations using alternate gateway and new calls will be processed normally.
If no alternate gateway is configured, no new inbound or outbound calls on the effected H.323 stations.
If the SES fails…
All calls in progress on the SES will fail.
No new inbound or outbound calls can go through the SES.

Слайд 56

DISASTER RECOVERY

If an entire Voice Portal system fails, there is no way

DISASTER RECOVERY If an entire Voice Portal system fails, there is no
to automatically have new calls handled by a backup Voice Portal system.
If the failed Voice Portal system gets licenses from a central WebLM server, licenses can manually be moved to a different Voice Portal system without obtaining new license file from Avaya.
Depending upon your needs, you might partially/fully pre-configure backup Voice Portal system so that manual migration of calls after disaster strikes is easier.
Имя файла: VoiceXML-and-CCXML.pptx
Количество просмотров: 40
Количество скачиваний: 0