Запись разговора при трансфере

От: Никитин Андрей <CGatePro_at_mx_ru>
Дата: Mon 18 Jun 2007 - 14:15:05 MSD


День добрый!

Подскажите, как реализовать запись разговора при трансфере.

Код.

function bridgedLoopHash(peerLeg) external; function callerLeg(parameters,callPending) external; function recordTalk(maxtime, tosend) forward;

function callNumber(phoneNumber,timeOut,from) forward;

entry Main is
 if AcceptCall() != null then stop; end if;

 timeOut = 10;
 from = "?????????????";

 group = NewArray();
 group[0] = "?????????????";
 group[1] = "?????????????";

 count = Length(group);
 called = false;
 if count > 0 then
  index = 0;
  shift = RandomNumber() % count;
  while index < count and then timeOut > 0 loop    member = group[(index + shift) % count];    called = callNumber(member, timeOut, from);   exitif called;
   index = index + 1;
  end loop;
 end if;
 if not called then RejectCall("408-no answer"); end if; end entry;

function callNumber(phoneNumber,timeOut,from) is  parameters = NewDictionary();

 parameters.("") = EmailToSIPURI(phoneNumber);
 parameters.activeSide = false;
 parameters.From = EmailToSIPURI(from);
 parameters.("Expires") = timeOut;
 parameters.bridgedCall = true;
 parameters.("Call-ID") = PendingRequestData("Call-ID") + ".gr_ser";
 parameters.("Max-Forwards") = PendingRequestData("Max-Forwards")-1;

 tmp=recordTalk(60, "?????????????");

//<<<----------------------------------

 peerLeg = callerLeg(parameters,false);

 if not IsTask(peerLeg) then return false; end if;

 while IsConnected() loop
  input = bridgedLoopHash(peerLeg);
 exitif input != "#";
 end loop;

 return true;
end function;

function recordTalk(maxtime, tosend) is
 fromWhom = RemoteURI();
 Talk = Record(maxtime);

 if IsData(Talk) then

  content = NewArray();

  textPart = NewDictionary();

  textPart.("Content-Type") = "text";
  textPart.("Content-Subtype") = "html";
  textPart.body = "<HTML><BODY>"+fromWhom+"</BODY></HTML>";
  content[0] = textPart;

  dataPart = NewDictionary();

  dataPart.("Content-Type") = "audio";
  dataPart.("Content-Subtype") = "wav";
  dataPart.body = Talk;

  content[1] = dataPart;

  headers = NewDictionary();
  headers.("Content-Class") = "message";

  tmp=SendEmail(String(tosend),fromWhom,String(tosend),headers,content);   if(tmp) then return true;
  else return false;
  end if;
 end if;
 return false;
end function;

В таком виде, CGP начинает запись до соединения, если вставить строчку tmp=recordTalk(60, "?????????????");
после peerLeg = callerLeg(parameters,false); , то соединение разрывается.

С уважением Никитин Андрей Получено Mon Jun 18 10:15:08 2007

Этот архив был сгенерирован hypermail 2.1.8 : Mon 18 Jun 2007 - 15:13:52 MSD