⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vxml.h

📁 pwlib源码库
💻 H
📖 第 1 页 / 共 2 页
字号:
    BOOL TraverseIf();    BOOL TraverseExit();    BOOL TraverseVar();    BOOL TraverseSubmit();    BOOL TraverseMenu();    BOOL TraverseChoice(const PString & grammarResult);    BOOL TraverseProperty();    void SayAs(const PString & className, const PString & text);    static PTimeInterval StringToTime(const PString & str);    PURL NormaliseResourceName(const PString & src);    PXMLElement * FindForm(const PString & id);    virtual BOOL TraverseTransfer();    //friend class PVXMLChannel;    PSyncPoint waitForEvent;    PMutex sessionMutex;    PXML xmlFile;    PVXMLGrammar * activeGrammar;    BOOL listening;                 // TRUE if waiting for recognition events    int timeout;                    // timeout in msecs for the current recognition    PStringToString sessionVars;    PStringToString documentVars;    PMutex userInputMutex;    std::queue<char> userInputQueue;    BOOL recording;    PFilePath recordFn;    BOOL recordDTMFTerm;    PTimeInterval recordMaxTime;    PTimeInterval recordFinalSilence;    PSyncPoint    recordSync;    BOOL loaded;    BOOL finishWhenEmpty;    BOOL allowFinish;    PURL rootURL;    BOOL emptyAction;    PThread * vxmlThread;    BOOL threadRunning;    BOOL forceEnd;    PString mediaFormat;    PVXMLChannel * vxmlChannel;    PTextToSpeech * textToSpeech;    BOOL autoDeleteTextToSpeech;    PXMLElement * currentForm;    PXMLElement * currentField;    PXMLObject  * currentNode;  private:    void      ExecuteDialog();    PString       callingCallToken;    PSyncPoint    transferSync;    PSyncPoint    answerSync;    PString       grammarResult;    PString       eventName;    PINDEX        defaultDTMF;};//////////////////////////////////////////////////////////////////class PVXMLRecordable : public PObject{  PCLASSINFO(PVXMLRecordable, PObject);  public:    PVXMLRecordable()    { consecutiveSilence = 0; finalSilence = 3000; maxDuration = 30000; }    virtual BOOL Open(const PString & _arg) = 0;    virtual void Record(PVXMLChannel & incomingChannel) = 0;    virtual void OnStart() { }    virtual BOOL OnFrame(BOOL /*isSilence*/) { return FALSE; }    virtual void OnStop() { }    void SetFinalSilence(unsigned v)    { finalSilence = v; }    unsigned GetFinalSilence()    { return finalSilence; }    void SetMaxDuration(unsigned v)    { maxDuration = v; }    unsigned GetMaxDuration()    { return maxDuration; }  protected:    PTime silenceStart;    PTime recordStart;    unsigned finalSilence;    unsigned maxDuration;    unsigned consecutiveSilence;};//////////////////////////////////////////////////////////////////class PVXMLPlayable : public PObject{  PCLASSINFO(PVXMLPlayable, PObject);  public:    PVXMLPlayable()    { repeat = 1; delay = 0; sampleFrequency = 8000; autoDelete = FALSE; delayDone = FALSE; }    virtual BOOL Open(PVXMLChannel & /*chan*/, PINDEX _delay, PINDEX _repeat, BOOL _autoDelete)    { delay = _delay; repeat = _repeat; autoDelete = _autoDelete; return TRUE; }    virtual BOOL Open(PVXMLChannel & chan, const PString & _arg, PINDEX _delay, PINDEX _repeat, BOOL v)    { arg = _arg; return Open(chan, _delay, _repeat, v); }    virtual void Play(PVXMLChannel & outgoingChannel) = 0;    virtual void OnRepeat(PVXMLChannel & /*outgoingChannel*/)    { }    virtual void OnStart() { }    virtual void OnStop() { }    virtual void SetRepeat(PINDEX v)     { repeat = v; }    virtual PINDEX GetRepeat() const    { return repeat; }    virtual PINDEX GetDelay() const    { return delay; }    void SetFormat(const PString & _fmt)    { format = _fmt; }    void SetSampleFrequency(unsigned _rate)    { sampleFrequency = _rate; }    virtual BOOL ReadFrame(PVXMLChannel & channel, void * buf, PINDEX len);    virtual BOOL Rewind(PChannel *)     { return FALSE; }    friend class PVXMLChannel;  protected:    PString arg;    PINDEX repeat;    PINDEX delay;    PString format;    unsigned sampleFrequency;    BOOL autoDelete;    BOOL delayDone; // very tacky flag used to indicate when the post-play delay has been done};//////////////////////////////////////////////////////////////////class PVXMLPlayableURL : public PVXMLPlayable{  PCLASSINFO(PVXMLPlayableURL, PVXMLPlayable);  public:    BOOL Open(PVXMLChannel & chan, const PString & _url, PINDEX _delay, PINDEX _repeat, BOOL v);    void Play(PVXMLChannel & outgoingChannel);  protected:    PURL url;};//////////////////////////////////////////////////////////////////class PVXMLPlayableData : public PVXMLPlayable{  PCLASSINFO(PVXMLPlayableData, PVXMLPlayable);  public:    BOOL Open(PVXMLChannel & chan, const PString & /*_fn*/, PINDEX _delay, PINDEX _repeat, BOOL v);    void SetData(const PBYTEArray & _data);    void Play(PVXMLChannel & outgoingChannel);    BOOL Rewind(PChannel * chan);  protected:    PBYTEArray data;};//////////////////////////////////////////////////////////////////class PVXMLPlayableCommand : public PVXMLPlayable{  PCLASSINFO(PVXMLPlayableCommand, PVXMLPlayable);  public:    PVXMLPlayableCommand();    void Play(PVXMLChannel & outgoingChannel);    void OnStop();  protected:    PPipeChannel * pipeCmd;};//////////////////////////////////////////////////////////////////class PVXMLPlayableFilename : public PVXMLPlayable{  PCLASSINFO(PVXMLPlayableFilename, PVXMLPlayable);  public:    BOOL Open(PVXMLChannel & chan, const PString & _fn, PINDEX _delay, PINDEX _repeat, BOOL _autoDelete);    void Play(PVXMLChannel & outgoingChannel);    void OnStop();    virtual BOOL Rewind(PChannel * chan);  protected:    PFilePath fn;};//////////////////////////////////////////////////////////////////class PVXMLPlayableFilenameList : public PVXMLPlayable{  PCLASSINFO(PVXMLPlayableFilenameList, PVXMLPlayable);  public:    BOOL Open(PVXMLChannel & chan, const PStringArray & _filenames, PINDEX _delay, PINDEX _repeat, BOOL _autoDelete);    void Play(PVXMLChannel & outgoingChannel)    { OnRepeat(outgoingChannel); }    void OnRepeat(PVXMLChannel & outgoingChannel);    void OnStop();  protected:    PINDEX currentIndex;    PStringArray filenames;};//////////////////////////////////////////////////////////////////class PVXMLRecordableFilename : public PVXMLRecordable{  PCLASSINFO(PVXMLRecordableFilename, PVXMLRecordable);  public:    BOOL Open(const PString & _arg);    void Record(PVXMLChannel & incomingChannel);    BOOL OnFrame(BOOL isSilence);  protected:    PFilePath fn;};//////////////////////////////////////////////////////////////////PQUEUE(PVXMLQueue, PVXMLPlayable);//////////////////////////////////////////////////////////////////class PVXMLChannel : public PDelayChannel{  PCLASSINFO(PVXMLChannel, PDelayChannel);  public:    PVXMLChannel(unsigned frameDelay, PINDEX frameSize);    ~PVXMLChannel();    virtual BOOL Open(PVXMLChannelInterface * _vxml);    // overrides from PIndirectChannel    virtual BOOL IsOpen() const;    virtual BOOL Close();    virtual BOOL Read(void * buffer, PINDEX amount);    virtual BOOL Write(const void * buf, PINDEX len);    // new functions    virtual PWAVFile * CreateWAVFile(const PFilePath & fn, BOOL recording = FALSE);    const PString & GetMediaFormat() const { return mediaFormat; }    BOOL IsMediaPCM() const { return mediaFormat == "PCM-16"; }    virtual PString AdjustWavFilename(const PString & fn);    // Incoming channel functions    virtual BOOL WriteFrame(const void * buf, PINDEX len) = 0;    virtual BOOL IsSilenceFrame(const void * buf, PINDEX len) const = 0;    virtual BOOL QueueRecordable(PVXMLRecordable * newItem);    BOOL StartRecording(const PFilePath & fn, unsigned finalSilence = 3000, unsigned maxDuration = 30000);    BOOL EndRecording();    BOOL IsRecording() const { return recording; }    // Outgoing channel functions    virtual BOOL ReadFrame(void * buffer, PINDEX amount) = 0;    virtual PINDEX CreateSilenceFrame(void * buffer, PINDEX amount) = 0;    virtual void GetBeepData(PBYTEArray &, unsigned) { }    virtual BOOL QueueResource(const PURL & url, PINDEX repeat= 1, PINDEX delay = 0);    virtual BOOL QueuePlayable(const PString & type, const PString & str, PINDEX repeat = 1, PINDEX delay = 0, BOOL autoDelete = FALSE);    virtual BOOL QueuePlayable(PVXMLPlayable * newItem);    virtual BOOL QueueData(const PBYTEArray & data, PINDEX repeat = 1, PINDEX delay = 0);    virtual BOOL QueueFile(const PString & fn, PINDEX repeat = 1, PINDEX delay = 0, BOOL autoDelete = FALSE)    { return QueuePlayable("File", fn, repeat, delay, autoDelete); }    virtual BOOL QueueCommand(const PString & cmd, PINDEX repeat = 1, PINDEX delay = 0)    { return QueuePlayable("Command", cmd, repeat, delay, TRUE); }    virtual void FlushQueue();    virtual BOOL IsPlaying() const   { return (playQueue.GetSize() > 0) || playing ; }    void SetPause(BOOL _pause) { paused = _pause; }    void SetName(const PString & name) { channelName = name; }    unsigned GetSampleFrequency() const    { return sampleFrequency; }  protected:    PVXMLChannelInterface * vxmlInterface;    unsigned sampleFrequency;    PString mediaFormat;    PString wavFilePrefix;    PMutex channelWriteMutex;    PMutex channelReadMutex;    BOOL closed;    // Incoming audio variables    BOOL recording;    PVXMLRecordable * recordable;    unsigned finalSilence;    unsigned silenceRun;    // Outgoing audio variables    BOOL playing;    PMutex queueMutex;    PVXMLQueue playQueue;    PVXMLPlayable * currentPlayItem;    BOOL paused;    int silentCount;    int totalData;    PTimer delayTimer;    // "channelname" (which is the name of the <record> tag) so    // results can be saved in vxml session variable    PString channelName;};//////////////////////////////////////////////////////////////////class PVXMLTransferOptions : public PObject{  PCLASSINFO(PVXMLTransferOptions, PObject);  public:    PVXMLTransferOptions() { }    void SetCallingToken(const PString & calling) { callingToken = calling; }    PString GetCallingToken() const               { return callingToken; }        void SetCalledToken(const PString & called)   { calledToken = called; }    PString GetCalledToken( ) const               { return calledToken; }    void SetSourceDNR(const PString & src)        { source = src; }    PString GetSourceDNR() const                  { return source; }    void SetDestinationDNR(const PString & dest ) { destination = dest; }    PString GetDestinationDNR() const             { return destination; }    void SetTimeout(unsigned int time)            { timeout = time; }    unsigned int GetTimeout() const               { return timeout; }    void SetBridge(BOOL brdg)                     { bridge = brdg; }    BOOL GetBridge() const                        { return bridge; }  private:    PString callingToken;    PString calledToken;    PString destination;    PString source;    unsigned int timeout;    BOOL bridge;};class PVXMLTransferResult : public PString{  PCLASSINFO(PVXMLTransferResult, PString);  public:    PVXMLTransferResult()    { }    PVXMLTransferResult(char * cstr)       : PString( cstr )     { }    PVXMLTransferResult(const PString & str )      : PString(str)    {}    void SetName(const PString & n)     { name = n; }    PString GetName() const             { return name; }   private:    PString name;};#endif// End of file ////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -